Показать сообщение отдельно
Старый 01.02.2011, 01:17
NumpuT вне форума Посмотреть профиль Отправить личное сообщение для NumpuT Найти все сообщения от NumpuT
  № 11  
Ответить с цитированием
NumpuT

Регистрация: Dec 2009
Сообщений: 45
Вот код
Код AS3:
for( ... ) {
					_materials.push( materials[i] );
					var curWidthY:Number = materials[i].sourceRect.height / 2;
					var curHeightX:Number = materials[i].sourceRect.width / 2;					
					var tmpSize:Number = int(( materials[i].sourceRect.width * materials[i].sourceRect.height ) / ( materials[i].sourceRect.width + materials[i].sourceRect.height ));
					var vertices:Vector.<Number>;
					vertices = Vector.<Number>([ -curHeightX, -curWidthY, -curHeightX, curWidthY, curHeightX, curWidthY, curHeightX, -curWidthY]);
					var rot:Vector3D = FACES_ORIENTATION[i].clone( );
					rot.negate( );
					var pos:Vector3D = FACES_POSITION[i].clone( );
					pos.scaleBy( tmpSize );
 
 
					var mtrx:Matrix3D = new Matrix3D( );
					mtrx.prependRotation( rot.x, Vector3D.X_AXIS);
					mtrx.prependRotation( rot.y, Vector3D.Y_AXIS);
					mtrx.prependRotation( rot.z, Vector3D.Z_AXIS);
					mtrx.appendTranslation( pos.x, pos.y, pos.z );
					createPolygonFace( vertices, mtrx, materials[i] );
 
				}
Код AS3:
public function createPolygonFace( vertices:Vector.<Number>, faceMatrix:Matrix3D, material2Use:Material ):void {
 
			var face:Face = new Face( material2Use, vertices, Vector.<int>([0, 1, 2, 0, 2, 3]), Vector.<Number>([ 0, 0, 0, 1, 1, 1, 1, 0 ]) );
 
			var dir:Number = (vertices[2] - vertices[0]) * (vertices[5] - vertices[3]) - (vertices[3] - vertices[1]) * (vertices[4] - vertices[2]);
 
			face.inside = dir > 0 ? !_inside : _inside;
 
			face.transform.matrix3D = faceMatrix;
 
			addFace( face );
 
		}
Код AS3:
private function SetFacePostion( materials:Vector.<Material> ) : Boolean {
			if ( materials.length != 6 ) return false;
			var w0:Number = materials[0].sourceRect.width
			var w1:Number = materials[1].sourceRect.width
			var w2:Number = materials[2].sourceRect.width
			var w3:Number = materials[3].sourceRect.width
			var w4:Number = materials[4].sourceRect.width
			var w5:Number = materials[5].sourceRect.width
			var h0:Number = materials[0].sourceRect.height
			var h1:Number = materials[1].sourceRect.height
			var h2:Number = materials[2].sourceRect.height
			var h3:Number = materials[3].sourceRect.height
			var h4:Number = materials[4].sourceRect.height
			var h5:Number = materials[5].sourceRect.height
			//if ( w0 != w2 || w1 != h2 || h0 != h1 ) return false;
// вот здесь я задаю кооэфициенты но мне нужно их точно определить я не знаю как
			var dz:Number = 1.65; //*/ h4 / 100
			var dy:Number = 0.6; //*/ h0 / 100;
			var dx:Number = 1.1; //*/ w0 / 100;
			FACES_POSITION[0].z = -dz;
			FACES_POSITION[2].z = dz;
			FACES_POSITION[1].x = dx;
			FACES_POSITION[3].x = -dx;
			FACES_POSITION[4].y = dy;
			FACES_POSITION[5].y = -dy;
			return true;
		}
Добавлено через 16 часов 15 минут
Я так понял что надо копать где-то в Эйлеровых графах?