2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 3d 2d
Сообщение31.08.2009, 15:42 
Мне нужны 2d и 3d формулы.

Т.е. например есть линия в 2d и координаты (x1,y1) (x2,y2)
формулы какие-то вроде этих
первая точка
x= x1*cos(w)+y1*sin(w)
y= x1*sin(w)+y1*cos(w)
и воторая точка так же.

И 3d для линии с координатами (x1,y1,z1) (x2,y2,z2)
формулы примерно должны быть такие
x = x1*sin(wx)*cos(wy)*sin(wz)
и т.д.
В гугле и на форумах найти не могу.
Также мне бы хотелось, чтобы линию можно было отдельно вращать вокруг всех осей в отдельности.
Т.е. отдельно x,y,z, изменяя только их углы.

 
 
 
 Re: 3d 2d
Сообщение31.08.2009, 16:09 
Аватара пользователя
Может быть Вы имеете формулы перехода к полярным координатам?

 
 
 
 Re: 3d 2d
Сообщение31.08.2009, 16:29 
gris в сообщении #239386 писал(а):
Может быть Вы имеете формулы перехода к полярным координатам?

Возможно имеет в виду переход к новой системе координат, повернутой вокруг начала координат. В трехмерном случае действительно тремя углами определяется :?:

 
 
 
 Re: 3d 2d
Сообщение31.08.2009, 16:33 
Мне хуть чё нибудь. Главное чтобы я мог вращать линию в 3d вокруг каждой в отдельности оси.
Я уже 3-ий год время от времени к этой теме возвращаюсь и добился только вращения в 2d в полярной системе координат, а хочется и в декартовой и 3d .

 
 
 
 Re: 3d 2d
Сообщение31.08.2009, 17:00 
Вращение в плоскости вокруг начала координат описывается формулами
$x=x_1*\cos{w_z}-y_1*\sin{w_z}$
$y=x_1*\sin{w_z}+y_1*\cos{w_z}$
Ими же,добавив $z=z_1$ , описывается вращение вокруг оси z. Самостоятельно опишите остальные вращения, поменяв имена координат
А... :wink:
Вокруг оси х на угол $w_x$:
$x=x_1$
$y=y_1*\cos{w_x}-z_1*\sin{w_x}$
$z=y_1*\sin{w_x}+z_1*\cos{w_x}$
Вокруг оси у на угол $w_y$:
$x=x_1*\cos{w_y}-z_1*\sin{w_y}$
$y=y_1$
$z=x_1*\sin{w_y}+z_1*\cos{w_y}$

 
 
 
 
Сообщение31.08.2009, 17:03 
Пожалуйста, очень прошу напишите полностью для 3d всё что нужно, а то ну не врубаю уже 3 год, очень прошу...

 
 
 
 Re:
Сообщение31.08.2009, 17:30 
mycoding в сообщении #239397 писал(а):
Пожалуйста, очень прошу напишите полностью для 3d всё что нужно, а то ну не врубаю уже 3 год, очень прошу...
Вы просили формулы поворота вокруг каждой из координатных осей. Вам написали формулы поворота вокруг оси OX и оси OY. Неужто вокруг оси OZ сами не напишите?! Не верю!

 
 
 
 
Сообщение31.08.2009, 17:36 
А как их потом преоброзовать в две координаты координаты?
ведь мне в итоге надо это всё в две координаты превратить.

 
 
 
 Re: 3d 2d
Сообщение31.08.2009, 17:41 
mycoding в сообщении #239402 писал(а):
две координаты координаты?

А Ва поставьте задачу точно. Что в точности дано, что в точности нужно. Тогда, совершенно не исключено, кто-нибудь да откликнется.

 
 
 
 
Сообщение31.08.2009, 17:45 
Короче ребята вот прога на Javascripte и canvas в качестве графики , мне надо её переделать в 3d 100% работате в мозиле последней версии и опере выше 9 +

Код:
<html>
<head>
<script>
i=0;
j=0;
z=0;
x1=0;y1=0;z1=0; x2=0;y2=0;z2=0;
flag=0;
rot=0;
trans=1;
oxy=200;
r=100;
function myarc()
{

x1 = r * Math.cos(Math.PI/2+i) * Math.sin(Math.PI/2+j) + oxy;
y1 = r * Math.sin(Math.PI/2+i) * Math.sin(Math.PI/2+j) + oxy;
z1 = r * Math.cos(Math.PI/2+j) + oxy;

x2 = r * Math.cos(-Math.PI/2+i) * Math.sin(Math.PI/2+j) + oxy;
y2 = r * Math.sin(-Math.PI/2+i) * Math.sin(Math.PI/2+j) + oxy;
z2 = r * Math.cos(-Math.PI/2+j) + oxy;

var ctx = document.getElementById('canvas').getContext('2d');
ctx.clearRect(0,0,500,500);
ctx.lineWidth = 4;
ctx.strokeStyle = '#325FA2';
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.moveTo(oxy,oxy-100);
ctx.lineTo(oxy,oxy+100);
ctx.moveTo(oxy-100,oxy);
ctx.lineTo(oxy+100,oxy);
ctx.stroke();

document.getElementById('divwork').innerHTML="i="+i+"<br> x1="+x1+"<br> y1="+y1+"<br> x2="+x2+"<br>y2="+ y2;

}

function down(event)
{
x1=event.clientX;
y1=event.clientY;
flag=1;
}

function up(event)
{
x2=event.clientX;
y2=event.clientY;
flag=0;
}

function move(event)
{
if(flag)
{
x2=event.clientX;
y2=event.clientY;
myarc();
}
}

function starti()
{
xinterval = setInterval('iplus()',100);
}

function startz()
{
xinterval = setInterval('zplus()',100);
}

function stop()
{
clearInterval(xinterval);
rot=0;
}

function iplus()
{
i=i+Math.PI/180;
myarc();
}

function zplus()
{
j=j+Math.PI/180;
myarc();
}
</script>
</head>
<body>
<br>
<canvas id="canvas" width=500 height=500 style="border:1px solid #888888;position:absolute;left:0;top:0"></canvas>.
<div id=divwork style="position:absolute;left:550;top:60"></div><br>
<button onmousedown="iplus();starti();" onmouseup="stop()" style="position:absolute;left:550;top:10">Повернуть i</button><br>
<button onmousedown="zplus();startz();" onmouseup="stop()" style="position:absolute;left:550;top:40">Повернуть z</button>
</body>
</html>

Вот изображение
Изображение

-- Пн авг 31, 2009 19:35:41 --

-- Пн авг 31, 2009 19:37:04 --

Ребята, дело же ведб не в том ,что мне лень взять что-то посчитать. Я уже в нескольких форумах спрашивал и все отшучиваются да это так легко , чё там делать, а в итоге как не знал ,так и не знаю. МНе друг этот форум посоветовал , как очень хороший , где всегда есть ответ на твой вопрос. Подскажите как или хотябы что прочитать , но я в нете уже столько прочитал - но не врубаю, пример нужен один и простой с линеей в 3d.

 
 
 
 Re: 3d 2d
Сообщение31.08.2009, 20:17 
Например имеется программка, написанная на Маткаде, которая строит поверхность, получающуюся от вращения любой пространственной кривой вокруг любой прямой.На картинке парабола вращается вокруг оси. Сама парабола и ось вращения изображены на картинке.
Изображение

 
 
 
 Re: 3d 2d
Сообщение01.10.2009, 12:13 
Аватара пользователя
Матрица 3D поворота обсуждалась здесь и в других темах (попробуйте поиск "матрица поворота")

 !  Также прошу Вас обратить внимание на наши правила, в частности, написание формул.

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group