当前位置: 首页 > ds >正文

php 能否制作图形,PHP制作 3D图形之自定义图形及矢量图[多图]

PHP制作

3D图形之自定义图形及矢量图[多图]

2009-11-6 19:52:08   出处:https://www.yqdown.com

上一篇执行

了一些基本

3D图形实例,本篇介绍自定义及矢量图实例。首先打造

一个三尖角星体,分别由“前面”,“后面”和三个“侧面”组成。

自定义多边形

代码:

以下为引用的内容:

require_once('Image/3D.php');

$image = new Image_3D();

$image->setColor(new Image_3D_Color(255, 255, 255));

//建立

光源

$light1 = $image->createLight('light',array(-50, -50, -50));

$light1->setColor(new Image_3D_Color(100, 250, 100));

$light2 = $image->createLight('light',array(50, -50, 0));

$light2->setColor(new Image_3D_Color(100, 100, 250));

$light3 = $image->createLight('light',array(50, 50, 0));

$light3->setColor(new Image_3D_Color(50, 0, 100));

//建立

多边形数组

$polygons = array();

//前面点坐标

$polygons[] = array(

array(0, -120, 0), array(-18, -12, 0),

array(-86, 48, 0), array(0, 18, 0),

array(86, 48, 0), array(18, -12, 0)

);

//后面点坐标

$polygons[] = array(

array(0, -120, 60), array(-18, -12, 60),

array(-86, 48, 60), array(0, 18, 60),

array(86, 48, 60), array(18, -12, 60)

);

//三侧面点坐标

$polygons[] = array(

array(0, -120, 0), array(-18, -12, 0),

array(-86, 48, 0), array(-86, 48, 60),

array(-18, -12, 60),array(0, -120, 60)

);

$polygons[] = array(

array(-86, 48, 0), array(0, 18, 0),

array(86, 48, 0), array(86, 48, 60),

array(0, 18, 60), array(-86, 48, 60)

);

$polygons[] = array(

array(86, 48, 0), array(18, -12, 0),

array(0, -120, 0), array(0, -120, 60),

array(18, -12, 60),array(86, 48, 60)

);

//打造

3D图像

foreach ($polygons as $poly) {

$points = array();

foreach ($poly as $set) {

$points[] = new Image_3D_Point($set[0], $set[1], $set[2]);

}

$p = $image->createObject('polygon', $points);

$p->setColor(new Image_3D_Color(255, 255, 255));

}

$image->transform($image->createMatrix('Rotation', array(-10, -25, -15)));

$image->createRenderer('perspectively');

$image->createDriver('gd');

$image->render(300, 300, 'http://www.qqread.com/php/2009/08/http://www.qqread.com/php/2009/08/anim.png');

echo 'anim.png';

?>

效果图:

20091161952720550.jpg

矢量图

可缩放的矢量图形(Scalable Vector Graphics,SVG)文件格式是组成2D图像的矢量XML文件。 在2001年,W3C对该格式执行

了标准化,但其在Web方面的运用

因为阅读

器显示SVG文件的牵制而不很流行。 目前,最好的选择是Firefox它有内置的SVG支持,或具有Adobe SVG插件的IE。下面通过一个实例生成SVG文件。

代码:

以下为引用的内容:

require_once('Image/3D.php');

$rot_x = 45;

$rot_y = 45;

$rot_z = 10;

$image = new Image_3D();

$image->setColor(new Image_3D_Color(255, 255, 255));

for ($x=0; $x < 4; $x++) {

for ($y=0; $y < 4; $y++) {

for ($z=0; $z < 4; $z++) {

//建立

球体

$sphere = $image->createObject('sphere', array('r' => 25, 'detail' => 3));

//后面150用于配置

图像透明度

$sphere->setColor(new Image_3D_Color(255, 162, 0, 150));

$sphere->transform($image->createMatrix('Move', array(($x * 75) + 50, $y * 75, $z * 75)));

$sphere->transform($image->createMatrix('Rotation', array($rot_x, $rot_y, $rot_z)));

}

}

}

$image->transform($image->createMatrix('Move', array(-225, -100, 0)));

$image->createRenderer('perspectively');

//运用

SVG驱动生成矢量图

$image->createDriver('svg');

$image->render(600, 600, 'anim.svg');

header('Location:anim.svg');

?>

效果图:

20091161952817533.jpg

输出的SVG文件打开后,其格式即为XML:

以下为引用的内容:

/p>

"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

style="fill: #ffffff; fill-opacity: 1.00; stroke: none;" />

style="fill: #ffa200; fill-opacity: 0.41; stroke: none;" />

style="fill: #ffa200; fill-opacity: 0.41; stroke: none;" />

... ...

style="fill: #ffa200; fill-opacity: 0.41; stroke: none;" />

style="fill: #ffa200; fill-opacity: 0.41; stroke: none;" />

作者: Gnie出处: {GnieTech} (http://www.cnblogs.com/gnielee/) 版权声明: 本文的版权归作者与博客园共有。转载时须注明本文的细致

链接,否则作者将保留追究其法律责任。

分享到

http://www.xdnf.cn/news/11768.html

相关文章:

  • Wi-Fi 6(802.11ax)解析24:802.11ax中MU-MIMO和OFDMA的区别
  • 10个可爱的外国互动型网站
  • 免费3D模型网站大盘点,你推荐哪一个?
  • 俺常用的资源网站
  • 搭建 PHP 开发环境:详细步骤和示例代码
  • 使用Pano2VR实现全景图切换和平面图效果
  • Servlet系列:(HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig)详解
  • 002java jsp SSM springboot医护人员排班系统(源码+文档+开题+运行视频+讲解视频)
  • CUDA开源 轻松跑AMD GPU/Intel x86 CPU
  • 3日行程安排
  • 特殊字符大全(只需这一文章)
  • 化妆品展示网页设计作业 静态HTML化妆品网站 DW美妆网站模板下载 大学生简单网页作品代码 个人网页制作 学生个人网页设计作业
  • 收藏几个代码自动生成器!尚未使用,不置可否。
  • 地址标准化服务AI深度学习模型推理优化实践
  • 图论基础算法
  • MyEclipse 8.0.0 in Fedora 12
  • 【最经典的79个】软件测试面试题(内含答案)
  • C++程序员常用工具集
  • 推荐学习法——思维导图
  • 海康机器人:工业相机SDK二次开发
  • 如何在MyEclipse下集成SVN详解
  • 嵌入式边缘计算软硬件开发实训室解决方案
  • 什么是企业邮箱
  • 12月24日火箭vs活塞视频在线直播视频
  • 离散数学编程作业(c++实现)
  • 树莓派详细介绍
  • MATLAB 实用命令及技巧整理
  • 算法——背包问题
  • 免费API数据接口
  • 解决方案:幻兽帕鲁Palworld私服部署 一杯茶的功夫搭建部署一个属于自己的游戏私服