LINUX.ORG.RU

Задачка. Продолжение.


0

0

Ниже мой пост про координаты прямоугольника.
Оказалось, что условие не то, на самом деле
даны координаты двух противоположных вершин
КВАДРАТА, надо найти две остальные вершины
(то есть их координаты).Примите во внимание,
что квадрат может быть наклонен.

anonymous

Квадрат ABCD A=(xA,yA), C=(xA,yA) - на входе.

центр квадрата Z=(A+C)/2

вектор из центра к A : V = A-Z

вектора к B и D соотв: VB = (Vy,-Vx), VD = -VB

B = Z+VB, D=Z+VD

ПРиведение подобных и раскрытие скобок оставляю на вашей совести...

Вообще, батенька, могли б и сами... "тоже мне бином Ньютона"(с)

AIv ★★★★★
()
Ответ на: комментарий от AIv

Если хотите чему нить начучиться сами - по координатам 3-х вершин куба принадлежащих одной грани найдите координаты всех остальных вершин:-))))

Метод аналогичный.

AIv ★★★★★
()

Это как так "квадрат может быть наклонен"? Я думал что квадрат - это равносторонний четырехугольник с углами = 90

phoenix ★★★★
()
Ответ на: комментарий от Tsahes

8-ми мерная в геометрии Лобачевского. Вы свой ноутбук видимо всегда выставляете на столе так, что бы его стороны были строго параллельны сторонам стола?:-)))

AIv ★★★★★
()
Ответ на: комментарий от AIv

Сильно не пинайте за код, но по словам Alv, это будет так: 
=)

#include <iostream.h>
int main()
 {
  struct points {
   float x;
   float y;
   } a,b,c,d,z,v,vb,vd;
 cout << endl << "A (x,y): ";
 cin >> a.x >> a.y;
 cout << endl << "C (x,y): ";
 cin >> c.x >> c.y;
 z.x=(a.x+c.x)/2;
 z.y=(a.y+c.y)/2;
 v.x=a.x-z.x;
 v.y=a.y-z.y;
 vb.x=v.y;
 vb.y=-v.x;
 vd.x=-v.y;
 vd.y=v.x;
 b.x=z.x+vb.x;
 b.y=z.y+vb.y;
 d.x=z.x+vd.x;
 d.y=z.y+vd.y;
 cout << endl << b.x << " " << b.y;
 cout << endl << d.x << " " << d.y << endl;
 return(0);
 }

pisun
()
Ответ на: комментарий от AIv

Извините, а что "по координатам 3-х вершин куба принадлежащих одной
грани" действительно можно найти координаты всех остальных вершин?
Я всегда думал что это не так, ведь вариантов ответа для такой
постановки задачи ДВА! :)

romanSA
()
Ответ на: комментарий от romanSA

Вы абс. правы))) Ну пусть два куба - тоже ничего.

pisunu - пораскрывайте все таки скобки, приведите подобные... будет короче и наглядней раза в два. point лучше оформить как класс, переопределить операторы сложения, вычитания, умножения и деления (на double) чтения/вывода в поток и пользоваться им в будущем - код будет гораздо наглядней. Если оформите его как темплейтный класс параметризованный по размерности задачи - то вообще зачОт))))

AIv ★★★★★
()
Ответ на: комментарий от pisun

>#include <iostream.h>

а такой include разве не obsolete? вроде <iostream> надо

anonymous
()
Ответ на: комментарий от romanSA

>Извините, а что "по координатам 3-х вершин куба принадлежащих одной грани" действительно можно найти координаты всех остальных вершин? Я всегда думал что это не так, ведь вариантов ответа для такой постановки задачи ДВА! :)

возможно здесь подразумевается, что важен порядок задания исходных вершин. если по часовой стрелке, то первый куб, если против, то второй.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.