PHP绘制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:

2009-8-27-11.55.51

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

 

2. 3D坐标系

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

xyz

3. 绘制圆锥体

代码如下:

<?php
//调用3D图形类
require_once('Image/3D.php');//创建一个三维空间
$image = new Image_3D();
$image->setColor(new Image_3D_Color(255, 255, 255));//在坐标系左下方创建一个红色光点
$light1 = $image->createLight("Light",array(-100, 100, -100));
$light1->setColor(new Image_3D_Color(255, 0, 0));//在坐标系右上方创建一个绿色光点
$light2 = $image->createLight("Light",array(100, -200, -50));
$light2->setColor(new Image_3D_Color(0, 200, 0));//创建3D圆锥体
$cone = $image->createObject('cone',array('detail'=>360));
$cone->setColor(new Image_3D_Color(255, 255, 255));
//按X,Y,Z轴缩放
$cone->transform($image->createMatrix('scale', array(80, 150, 80)));
//按X,Y,Z轴旋转
$cone->transform($image->createMatrix('rotation', array(15, 0, 20)));
//按X,Y,Z轴移动
$cone->transform($image->createMatrix('move', array(0, -50, 0)));//创建2D输出图像
//渲染效果,Image_3D共提供了种效果:Isometric,Perspectively,Raytrace
//参考...\PEAR\Image\3D\Renderer目录
$image->createRenderer('perspectively');
//图像驱动,也可以SVG,ASCII等
//参考...\PEAR\Image\3D\Driver目录
$image->createDriver('gd');
//创建输出图片名称及大小
$image->render(400, 300, 'object.png');
//显示效果图
echo '<img src="object.png">';
?>

效果图:

object

4. 3D文字效果

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

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

效果图:

object

源代码下载:






本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2009/08/27/1555038.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分

r语言怎么以第二列绘制线图Part I of this blog series is here.本博客系列的第一部分 在这里 。 At the UKHO we are interested in the oceans, the seabed and the coastline — not to mention everything in and on them! In our previous blog, we (the UKHO Data Scien…

JSP基础--动作标签

JSP基础--动作标签 JSP动作标签 1 JSP动作标签概述 动作标签的作用是用来简化Java脚本的&#xff01; JSP动作标签是JavaWeb内置的动作标签&#xff0c;它们是已经定义好的动作标签&#xff0c;我们可以拿来直接使用。 如果JSP动作标签不够用时&#xff0c;还可以使用自定义标…

rcp rapido_Rapido使用数据改善乘车调度

rcp rapidoGiven our last blog post of the series, which can be found here :鉴于我们在该系列中的最后一篇博客文章&#xff0c;可以在这里找到&#xff1a; We thought it would be helpful to explain how we implemented all of the above into an on-ground experimen…

SSRS:之为用户“NT AUTHORITY\NETWORK SERVICE”授予的权限不足,无法执行此操作。 (rsAccessDenied)...

错误信息&#xff1a;为用户“NT AUTHORITY\NETWORK SERVICE”授予的权限不足&#xff0c;无法执行此操作。 (rsAccessDenied)如图&#xff1a;解决方案之检查顺序&#xff1a;1.检查报表的执行服务帐户。使用“ Reporting Services 配置管理器”。2.检查数据库安全 - 登录名 中…

飞机上的氧气面罩有什么用_第2部分—另一个面罩检测器……(

飞机上的氧气面罩有什么用This article is part of a series where I will be documenting my journey on the development of a social distancing feedback system for the blind as part of the OpenCV Spatial Competition. Check out the full series: Part 1, Part 2.本文…

经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)...

题目来源 P3376 【模板】网络最大流P2756 飞行员配对方案问题P3381 【模板】最小费用最大流最大流 最大流问题是网络流的经典类型之一&#xff0c;用处广泛&#xff0c;个人认为网络流问题最具特点的操作就是建反向边&#xff0c;这样相当于给了反悔的机会&#xff0c;不断地求…

数字经济的核心是对大数据_大数据崛起为数字世界的核心润滑剂

数字经济的核心是对大数据“Information is the oil of the 21st century, and analytics is the combustion engine”.“信息是21世纪的石油&#xff0c;分析是内燃机”。 — Peter Sondergaard, Senior Vice President of Gartner Research.— Gartner研究部高级副总裁Peter…

制作简单的WIFI干扰器

原教程链接:http://www.freebuf.com/geek/133161.htmlgithub 1.准备材料 制作需要的材料有 nodemcu开发版IIC通信 128*64 OLED液晶屏电线按钮开关万能板排针(自选)双面胶(自选)参考2.准备焊接 引脚焊接参考 oled按钮效果3.刷入固件 下载烧录工具:ESP8266Flasher.exe 下载固件:…

Snipaste截图

绘图绘色&#xff0c;描述加图片能更加说明问题的本质。今天推荐一款多功能的截图snipaste... 欣赏绘色 常见报错 解决方案&#xff1a; 下载相关的DLL即可解决&#xff0c; 请根据你操作系统的版本&#xff08;32位/64位&#xff09;&#xff0c;下载并安装相应的微软 Visual …

azure第一个月_MLOps:两个Azure管道的故事

azure第一个月Luuk van der Velden and Rik Jongerius卢克范德费尔登(Luuk van der Velden)和里克 琼格里乌斯( Rik Jongerius) 目标 (Goal) MLOps seeks to deliver fresh and reliable AI products through continuous integration, continuous training and continuous del…

VS2008 开发设计MOSS工作流 URN 注意了

最近学习MOSS 很苦恼&#xff0c;进度也很慢&#xff0c;最近在学习VS2008开发工作流&#xff0c;其中有结合INFOPATH 2007来做, 出现个BUG或者说是设置的问题,整整花了我一天工作时间&#xff0c;是这样的: 在部署的时候关于URN&#xff0c;大部分的教程都是这样的说的&#…

ArangoDB Foxx service 使用

备注&#xff1a;项目使用的是github https://github.com/arangodb-foxx/demo-hello-foxx1. git clonegit clone https://github.com/arangodb-foxx/demo-hello-foxx.git 2. 安装foxx servicefoxx-manager install demo-hello-foxx /demoapp 3. 效果自动生成的swagger 文档项目…

编译原理 数据流方程_数据科学中最可悲的方程式

编译原理 数据流方程重点 (Top highlight)Prepare a box of tissues! I’m about to drop a truth bomb about statistics and data science that’ll bring tears to your eyes.准备一盒纸巾&#xff01; 我将投放一本关于统计和数据科学的真相炸弹&#xff0c;这会让您眼泪汪…

iOS-FMDB

2019独角兽企业重金招聘Python工程师标准>>> #import <Foundation/Foundation.h> #import <FMDatabase.h> #import "MyModel.h"interface FMDBManager : NSObject {FMDatabase *_dataBase; }(instancetype)shareInstance;- (BOOL)insert:(MyM…

解决朋友圈压缩_朋友中最有趣的朋友[已解决]

解决朋友圈压缩We live in uncertain times.我们生活在不确定的时代。 We don’t know when we’re going back to school or the office. We don’t know when we’ll be able to sit inside at a restaurant. We don’t even know when we’ll be able to mosh at a Korn co…

MapServer应用开发平台示例

MapServer为当前开源WebGIS的应用代表&#xff0c;在西方社会应用面极为广泛&#xff0c;现介绍几个基于它的开源应用平台。 1.GeoMOOSE GeoMoose is a Web Client Javascript Framework for displaying distributed cartographic data. Among its many strengths, it can hand…

pymc3 贝叶斯线性回归_使用PyMC3进行贝叶斯媒体混合建模,带来乐趣和收益

pymc3 贝叶斯线性回归Michael Johns, Zhenyu Wang, Bruno Dupont, and Luca Fiaschi迈克尔约翰斯&#xff0c;王振宇&#xff0c;布鲁诺杜邦和卢卡菲亚斯基 “If you can’t measure it, you can’t manage it, or fix it”“如果无法衡量&#xff0c;就无法管理或修复它” –…

ols线性回归_普通最小二乘[OLS]方法使用于机器学习的简单线性回归变得容易

ols线性回归Hello Everyone!大家好&#xff01; I am super excited to be writing another article after a long time since my previous article was published.自从上一篇文章发表很长时间以来&#xff0c;我很高兴能写另一篇文章。 A Simple Linear Regression [SLR] is…

Amazon Personalize:帮助释放精益数字业务的高级推荐解决方案的功能

By Gerd Wittchen盖德维琴 推荐解决方案的动机 (Motivation for recommendation solutions) Rapid changes in customer behaviour requires businesses to adapt at an ever increasing pace. The recent changes to our work and personal life has forced entire nations t…

Linux 链接文件讲解

链接文件是Linux文件系统的一个优势。如需要在系统上维护同一文件的两份或者多份副本&#xff0c;除了保存多份单独的物理文件之外&#xff0c;可以采用保留一份物理文件副本和多个虚拟副本的方式&#xff0c;这种虚拟的副本就成为链接。链接是目录中指向文件真实位置的占位符。…