PHP绘制3D图形之自定义图形及矢量图

本篇介绍自定义及矢量图实例。首先绘制一个三尖角星体,分别由“前面”,“后面”和三个“侧面”组成。 自定义多边形

代码:

<?php
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, 'anim.png');
echo '<img src="anim.png">';
?>

效果图:

时间: 2024-09-16 22:42:58

PHP绘制3D图形之自定义图形及矢量图的相关文章

3d矩阵-使用3D矩阵将矩形图形变成不规则4边形

问题描述 使用3D矩阵将矩形图形变成不规则4边形 float m11, m12, m13, m14; float m21, m22, m23, m24; float m31, m32, m33, m34; float m41, m42, m43, m44; 请不要直接贴代码, 我想要了解计算的原理或推导过程 因为网上大部分资料都是比较零散, 没提到是如何运算的 关于矩阵中的第4列属性 我只知道m34是控制透视投影的, 还有m44是齐次坐标的基 至于m14,m24的含义就找不到资料了,有没有哪位大

VC6绘制3D饼状图

自从我的<VC6绘制3D饼状图>做好以后,因为留有bug,心里总觉得不舒服,通过网友的提示,思考之后,一下豁然开朗--VC是如此的强大,不应该这么简单的问题,做起来这么麻烦!还是受了那个.net作者的误导? 其实,最初的思路就是最好的方法!,只不过需要稍作修改.我第一个思路是把扇形一个一个叠起来,这样最后一个扇形在叠的过程中,侧面的边会破坏已经叠好的扇形.哎,为什么那么傻呢!把那个椭圆画完了再叠不是很简单?说干就干,修改,删除多余的代码,先画好分割扇形的椭圆(图1): 图1 然后把这个椭圆作为

SketchUp绘图软件怎么绘制3D小房子?

  通过半天的学习发现,SketchUp真的是一款非常非常棒的软件,容易上手,一学就会.对于不会使用3D绘图工具的非专业设计人员来说,如果想要绘制3D图形,SketchUp是一个不错的选择.而对于专业设计人员来说,尝试一下这个软件,你会爱上它. 比如我想绘制一个3D的小房子图形,如下图所示,该如何操作呢? 1.关于SketchUp的下载安装在这里就不多说了,不知道的可以看我另一篇<最简单的3D图纸绘制工具,一学就会>. 首先,通过'矩形'工具绘制一个矩形,绘制完后根据小房子的尺寸要求,键盘输入

PS绘制3D 立体图标

  绘制3D 立体图标;让你熟练掌握轻移(Ctrl+Alt+↓)的运用,通过颜色叠加做出立体效果.教程很详细,方法很简单,只需认真学,必能完成它. 分类: PS入门教程 ps图标制作教程

矢量图 矩形区域-VB矢量图 判断矩形区域内包含的图形(对象)

问题描述 VB矢量图 判断矩形区域内包含的图形(对象) 在VB做的矢量图中,自己定义一个矩形区域,如何确定在这个矩形区域内是否存在图像对象

《JavaScript高效图形编程(修订版)》——6.2 位图、矢量图,或两者兼而有之?

6.2 位图.矢量图,或两者兼而有之? 画布为不同的应用,设计了一个小而精的矢量图和位图命令集.两者之间的区别是什么? 矢量图 矢量图形由直线和曲线的数学表示定义.你可以填充矢量形状或/和描绘其轮廓.矢量图形的关键优势在于它们可以缩放到任意大小而不损失质量:边缘和细节依旧锋利.矢量图最适合单色或渐变区域面积较大.细节密度较小的图像.最典型的有:图表.图形.旗帜.线路图和卡通风格的图像.因为其数学特性,JavaScript操作矢量图特别方便. 位图 位图图像(如无所不在的JPEG格式)是不同颜色的

jqueryui-做过医院项目的大神进,图中红色区域是什么意思啊,这种图形叫做什么图形

问题描述 做过医院项目的大神进,图中红色区域是什么意思啊,这种图形叫做什么图形 解决方案 DIFF线,本质上是快慢均线的差值.网上去搜索DIFF线了解了解. 再就是如果实现的话,记得网上有个开源的曲线图库,貌似有例子,去找找吧. 解决方案二: 网上的DIFF线和图里的不一样,是我的图的问题吗?

php使用Jpgraph绘制3D饼状图的方法_php技巧

本文实例讲述了php使用Jpgraph绘制3D饼状图的方法.分享给大家供大家参考.具体实现方法如下: <?php include ("src/jpgraph.php"); include ("src/jpgraph_pie.php"); include ("src/jpgraph_pie3d.php"); $data = array(19,23,34,38,45,67,71,78,85,87,90,96); $graph = new Pie

Illustrator绘制3D楼层户型图效果实例教程

给各位Illustrator软件的使用者们来详细的解析分享一下绘制3D楼层户型图效果的实例教程. 教程分享:               好了,以上的信息就是小编给各位Illustrator的这一款软件的使用者们带来的详细的绘制3D楼层户型图效果的实例教程分享的全部内容了,各位看到这里的使用者们,小编相信大家现在看到这里了是很清楚了绘制方法了吧,那么大家就快去按照小编上面的教程自己去绘制看看效果吧.