快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

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

代码:

<?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">'';
?>

效果图:

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

矢量图

可缩放的矢量图形(Scalable Vector Graphics,SVG)文件格式是组成2D图像的矢量XML文件。 在2001年,W3C对该格式进行了标准化,但其在Web方面的使用因为浏览器显示SVG文件的牵制而不很流行。 目前,最好的选择是Firefox它有内置的SVG支持,或具有Adobe SVG插件的IE。下面通过一个实例生成SVG文件。

代码:

<?php
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++) 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号