分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
很多时候不会清楚这些图形是怎样来,因为加了一些意外的参数去就可能演变这种情况出现,看起来效果很有趣,在这里我借助了quickbox2d 的作者的其中的一些代码,进行修改,发现了另外一种放样的好玩地方。我们知道3D放样在建模的时候经常使用的一种方法,他原理有复制点的过程,我们在场景上看到图形是点的几何集合体。 这些点分布在一个空间里面,所在位置各不一样,但是分布出来的会构建成一种比较带艺术感的视角效果。无论如何也好,这种发现总是会给予一种新的想法,新的思考方式。我们没必要过于强调他会给给我们什么利润价值,至少能够给过你一个激动的时刻那么也是一个不错的时刻,你觉得呢?
它的原理很简单,通过在一个空间对某一点进行复制,并且设置它们的位置,它们所在空间并不一样,但是构成了新的图形符号。在3dsmax 这些放样经常会用于制作一些不规则的图形。效果也非常好。若果支持更加的填充那就更加刺激过瘾,似乎这只是一个意向,但是我相信借用其他运算完全可以实现到。目前还是需要继续去挖潜他里面潜力。
- package
- {
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- public class Main extends Sprite
- {
- private var canvas:BitmapData;
- private var points:Vector.<Number > ;
- private var vin:Vector.<Number > ;
- private var vout:Vector.<Number > ;
- private var uvts:Vector.<Number > ;
- private var dx:Number = 0;
- private var dy:Number = 0;
- private var matrix:Matrix3D;
- //舞台中心点
- private var centerX:Number = stage.stageWidth / 2;
- private var centerY:Number = stage.stageHeight / 2;
- private var pen:Shape=new Shape();
- public function Main()
- {
- init();
- }
- private function init():void
- {
- points = new Vector.<Number >();
- uvts = new Vector.<Number>();
- vin = new Vector.<Number >();
- matrix=new Matrix3D();
- canvas = new BitmapData(550,400,false,0xFEB6B6);//创建画布
- addChild(new Bitmap(canvas));
- addChild(pen);
- creatPoint();
- lath3D();
- render();
- addEventListener(Event.ENTER_FRAME,Run);
- }
- private function Run(event:Event):void
- {
- render();
- }
- //创建空间点集(x,y,z);
- private function creatPoint():void
- {
- var angle:Number = Math.PI / 180;
- var r:Number;
- var radius:Number = 100;
- for (var i:int=0; i<360; i++)
- {
- r=radius * (1 +Math.sin(angle*i));//心形公式
- var point:Point = Point.polar(r,angle * i);//极坐标转换笛卡尔坐标
- vin.push(point.x);
- vin.push(point.y-100);
- vin.push(150);
- }
- }
- //进行放样
- private function lath3D():void
- {
- var tVerts:Vector.<Number> = new Vector.<Number>();
- var nVerts:Vector.<Number> = new Vector.<Number>();
- for (var i:int=0; i<360; i+=3)
- {
- matrix.appendRotation(8,Vector3D.Y_AXIS);
- matrix.transformVectors(vin,tVerts);
- nVerts = nVerts.concat(tVerts);
- }
- vin = nVerts.concat();
- }
- //渲染
- private function render():void
- {
- rotationXY();
- canvas.lock();
- canvas.fillRect(canvas.rect,0xFEB6B6);
- var length:int = points.length;
- pen.graphics.moveTo(points[0],points[1]);
- for (var i:int=0; i<length; i+=2)
- {
- canvas.setPixel(points[i],points[i+1],0xffffff);
- }
- canvas.unlock();
- }
- //旋转
- private function rotationXY():void
- {
- dx += (mouseX - dx)/6;
- dy += (mouseY - dy)/6;
- matrix.identity();
- matrix.appendRotation(dx,Vector3D.Y_AXIS);
- matrix.appendRotation(dy,Vector3D.X_AXIS);
- matrix.appendTranslation(centerX, centerY,0);
- Utils3D.projectVectors(matrix, vin, points, uvts);
- }
- }
- }