|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2009
Сообщений: 45
|
Вот код
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] ); } 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 ); } 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; } Я так понял что надо копать где-то в Эйлеровых графах? |
|
|||||
Регистрация: Dec 2009
Сообщений: 45
|
Сборище тинейджеров, которые тыкают в друг-друга пальцами и отвечают на вопросы типа сколько будет 1+1. ГЫ-ГЫ.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Это Вы о ком?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
обычное решение треугольников.
проецируете ваш центр на одну из сторон призмы. рисуете гипотинузу(Димарик, не бей ногами, забыл как это слово пишется)). она будет одним из катетов треугольника, который получается из нее, расстояния от точки(проекции на сторону) до центра (это будет второй катет, потому как проецировали по нормали к стороне) и вычисляем расстояние от центра до вершины. тоже гипотинуза это если нам надо было найти это расстояние. коэффициенты - это я не знаю что такое, но найти можно путем деления найденных размерностей на другие размерности.)
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
Копайте в школьном учебнике по геометрии.
|
Часовой пояс GMT +4, время: 10:28. |
|
« Предыдущая тема | Следующая тема » |
|
|