搜尋
首頁php教程php手册PHP绘制3D图形

PHP绘制3D图形

Jun 06, 2016 pm 07:46 PM
imagepearphp圖形提供繪製

PEAR提供了Image_3D Package来创建3D图像。图像或光线在3D空间中按照X、Y 、Z 坐标定位。生成的图像将呈现在2D空间中,可以存储为 PNG、SVG 格式,或输出到Shell。通过Image_3D可以很方便生成一些简单的3D对象,例如立方体、锥体、球体、文本和饼图。查了一

       PEAR提供了Image_3D Package来创建3D图像。图像或光线在3D空间中按照X、Y 、Z 坐标定位。生成的图像将呈现在2D空间中,可以存储为 PNG、SVG 格式,或输出到Shell。通过Image_3D可以很方便生成一些简单的3D对象,例如立方体、锥体、球体、文本和饼图。查了一下PEAR文档关于Image_3D的实例一个也没有~囧~,只好自己研究一下,将经验分享给大家,请多多拍砖。言归正传,Image_3D需要PEAR和GD(配置php.ini)的支持。

1. 安装Image_3D

下载Image_3D Package ,目前最新版本为:0.4.1 alpha

 

官方下载:http://pear.php.net/package/Image_3D/download

将压缩包放到有pear.bat的目录中,例如:c:\php,若是WAMP5的话则为c:\wamp\php。

执行 pear install Image_3D-0.4.1.gz  安装Package:

PHP绘制3D图形

安装完毕,Image_3D会在 C:\wamp\php\PEAR\Image 目录中。

 

2. 3D坐标系

Image_3D的坐标系及旋转请参考下图,用于缩放、旋转或移动物体:

PHP绘制3D图形

3. 绘制圆锥体

代码如下:

<span><?php </span><span>//调用3D图形类
</span><span>require_once</span><span>(</span><span>'Image/3D.php'</span><span>)</span>;

<span>//创建一个三维空间
</span><span>$image </span><span>= </span><span>new </span>Image_3D<span>()</span>;
<span>$image</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>255</span><span>, </span><span>255</span><span>))</span>;

<span>//在坐标系左下方创建一个红色光点
</span><span>$light1 </span><span>= </span><span>$image</span><span>-></span>createLight<span>(</span><span>"Light"</span><span>,</span><span>array</span><span>(-</span><span>100</span><span>, </span><span>100</span><span>, -</span><span>100</span><span>))</span>;
<span>$light1</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>0</span><span>, </span><span>0</span><span>))</span>;

<span>//在坐标系右上方创建一个绿色光点
</span><span>$light2 </span><span>= </span><span>$image</span><span>-></span>createLight<span>(</span><span>"Light"</span><span>,</span><span>array</span><span>(</span><span>100</span><span>, -</span><span>200</span><span>, -</span><span>50</span><span>))</span>;
<span>$light2</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>0</span><span>, </span><span>200</span><span>, </span><span>0</span><span>))</span>;

<span>//创建3D圆锥体
</span><span>$cone </span><span>= </span><span>$image</span><span>-></span>createObject<span>(</span><span>'cone'</span><span>,</span><span>array</span><span>(</span><span>'detail'</span>=><span>360</span><span>))</span>;
<span>$cone</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>255</span><span>, </span><span>255</span><span>))</span>;
<span>//按X,Y,Z轴缩放
</span><span>$cone</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'scale'</span><span>, </span><span>array</span><span>(</span><span>80</span><span>, </span><span>150</span><span>, </span><span>80</span><span>)))</span>;
<span>//按X,Y,Z轴旋转
</span><span>$cone</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'rotation'</span><span>, </span><span>array</span><span>(</span><span>15</span><span>, </span><span>0</span><span>, </span><span>20</span><span>)))</span>;
<span>//按X,Y,Z轴移动
</span><span>$cone</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'move'</span><span>, </span><span>array</span><span>(</span><span>0</span><span>, -</span><span>50</span><span>, </span><span>0</span><span>)))</span>;

<span>//创建2D输出图像
//渲染效果,Image_3D共提供了种效果:Isometric,Perspectively,Raytrace
//参考...\PEAR\Image\3D\Renderer目录
</span><span>$image</span><span>-></span>createRenderer<span>(</span><span>'perspectively'</span><span>)</span>;
<span>//图像驱动,也可以SVG,ASCII等
//参考...\PEAR\Image\3D\Driver目录
</span><span>$image</span><span>-></span>createDriver<span>(</span><span>'gd'</span><span>)</span>;
<span>//创建输出图片名称及大小
</span><span>$image</span><span>-></span>render<span>(</span><span>400</span><span>, </span><span>300</span><span>, </span><span>'object.png'</span><span>)</span>;
<span>//显示效果图
</span><span>echo </span><span>'<img  src="/static/imghwm/default1.png" data-src="object.png" class="lazy" alt="PHP绘制3D图形" >'</span>;
<span>?></span></span>

效果图:

PHP绘制3D图形

4. 3D文字效果

将上例创建3D圆锥体部分代码替换为:

<span>//创建3D字体
</span><span>$text </span><span>= </span><span>$image</span><span>-></span>createObject<span>(</span><span>'text'</span><span>,</span><span>'cnblogs'</span><span>)</span>;
<span>$text</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>255</span><span>, </span><span>255</span><span>))</span>;
<span>$text</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'scale'</span><span>, </span><span>array</span><span>(</span><span>10</span><span>, </span><span>10</span><span>, </span><span>20</span><span>)))</span>;
<span>$text</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'rotation'</span><span>, </span><span>array</span><span>(</span><span>20</span><span>, </span><span>0</span><span>, </span><span>20</span><span>)))</span>;
<span>$text</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'move'</span><span>, </span><span>array</span><span>(-</span><span>150</span><span>, -</span><span>100</span><span>, </span><span>0</span><span>)))</span>;

效果图:

PHP绘制3D图形

源代码下载:

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),