PDA

Просмотр полной версии : прогуливал геометрию, пасаны чеделать


supernewbie
18.03.2011, 18:26
задача в приклейде, наверняка это все проходили в пятом классе, и выполняется это всё по какой-нибудь обдолбаной теореме, поэтому не знаю че тут написать, нет мне оправдания
памахите

destructor
18.03.2011, 18:32
конечная:
х = 60 * cos(75) ;
у = 60 * sin(75);

KOHb
18.03.2011, 18:35
60*Sin75 = 58 = y
60*Cos75 = 15,5 = x

supernewbie
18.03.2011, 18:46
var
len2:TPoint;
begin
PScene.Canvas.Pen.Color:=Line.color;
PScene.Canvas.MoveTo(Line.x,Line.y);
len2.x:=Round(Line.len * Cos(Line.angle));
len2.y:=Round(Line.len * Sin(Line.angle));
PScene.Canvas.LineTo(Line.x+len2.X,Line.y+len2.y);
end;

че-то не палучаится

Добавлено через 6 минут
55; -23 получается че-та :\

destructor
18.03.2011, 18:59
у тебя функции багнутые.

начерти на бумаге отрезок А(0:0) - В(15.5 , 58);
и проверь "угол наклона" транспортиром

supernewbie
18.03.2011, 19:03
всмысле багнутые? что не так с дельфовскими функциями? или какие ты имел ввиду?

Добавлено через 1 минуту
FloatToStr(60*Cos(75)) = 55,3
FloatToStr(60*Sin(75)) = -23,6

destructor
18.03.2011, 19:04
косинус и синус 75 это положительные числа, при умножении на 60 тоже будет положительное число.
я хз откуда у тебя -23 получилось, попробуй на другом калькуляторе, твой глючит, инфа 100%.

supernewbie
18.03.2011, 19:06
да какой канкулятор, это функции дельфы!

destructor
18.03.2011, 19:07
я хз, попробуй другую делфи

mira
18.03.2011, 19:13
ТЫ ПЕРЕВЕДИ ГРАДУСЫ В РАДИАНЫ !!121

supernewbie
18.03.2011, 19:20
спс, работает)

destructor
18.03.2011, 19:22
ТЫ ПЕРЕВЕДИ ГРАДУСЫ В РАДИАНЫ !!121А ТЫ НЕ ПАЛИ ФИТЧУ!!!!11

supernewbie
18.03.2011, 19:54
а обратно?) если знаю начальные и конечные
как получить длинну знаю, а угол?

Hint
18.03.2011, 20:22
а обратно?) если знаю начальные и конечные
как получить длинну знаю, а угол?

Подрастающее поколение...

У тебя есть катеты прямоугольного треугольника, которые его полностью описывают. Надо найти угол. Косинус - отношение прилежащего катета к гипотенузе. Синус - отношение противолежащего катета к гипотенузе. Зная синус или косинус, можно найти угол, используя функции арксинуса и арккосинуса. Только вот у тебя нет пока ни синуса, ни косинуса. Как же их найти? Посчитать гипотенизу. Вспоминаем теорему Пифагора... Или же вспоминаем, что есть еще тангенс (отношение противолежащего к прилежащему). Тогда гипотенуза уже не нужна.

supernewbie
18.03.2011, 20:28
я вообще вот даже представить не могу, как можно сравнивать треугольники и координаты, 2 точки, 4 числа, где тут треугольник? вам наверное это покажется полным бредом, но не могли вы мне объяснить, где в 4 числах и 2 координатах находятся катеты и треугольники

Hint
18.03.2011, 20:38
я вообще вот даже представить не могу, как можно сравнивать треугольники и координаты, 2 точки, 4 числа, где тут треугольник? вам наверное это покажется полным бредом, но не могли вы мне объяснить, где в 4 числах и 2 координатах находятся катеты и треугольники

Мм. Сначала надо найти вектор (сдвинуть отрезок к началу координат, одна из точек станет нулевой). Для этого вычитаешь координаты одной точки из координат другой. Получившиеся значения являются фактически длинами катетов. А длина отрезка - гипотенуза.

supernewbie
18.03.2011, 20:40
дельты то есть да, так, угу, Оу, понял!

Hint
18.03.2011, 20:41
Мне видимо сейчас вообще нечем заняться
http://img850.imageshack.us/img850/6479/coderx.png (http://img850.imageshack.us/i/coderx.png/)

supernewbie
18.03.2011, 20:45
вектор х:=x2-x1;
вектор у:=y2-y1;
гипотинуза:=Sqrt(sqr(dx)+sqr(dy));

вот так да

Hint
18.03.2011, 20:50
вектор х:=x2-x1;
вектор у:=y2-y1;
гипотинуза:=Sqrt(sqr(dx)+sqr(dy));

вот так да

Лучше без гипотенузы через арктангенс.

supernewbie
18.03.2011, 20:53
как для двух чисел вычислить арктангенс?

destructor
18.03.2011, 20:54
Или же вспоминаем, что есть еще тангенс (отношение противолежащего к прилежащему).так?

supernewbie
18.03.2011, 20:58
туплю в этой геометрии ппс(

destructor
18.03.2011, 21:04
противолежащийкатет:=y2-y1;
прилежащийкатет:=x2-x1;
тангенс: = противолежащийкатет / прилежащийкатет;
угол:= ArcTan( тангенс );


ну если только делфи опять не заглючит :D

supernewbie
18.03.2011, 21:09
а если противолежащийкатет или прилежащийкатет равен нулю??

destructor
18.03.2011, 21:11
нарисуй на бумажке такой отрезок, и померий транспортиром угол

supernewbie
18.03.2011, 21:19
x1=180
y1=450

x2=300
y2=450

dx=120
dy=0

path=120

angle=0

dx:=x2-x1;
dy:=y2-y2;
path:=Sqrt(sqr(dx)+sqr(dy));
tan:=dy/dx;
angle:=Round((ArcTan(tan)*180)/pi);

destructor
18.03.2011, 21:22
и?

supernewbie
18.03.2011, 21:23
это верно чтоли?

угол же 90

destructor
18.03.2011, 21:24
x1=180
y1=450

x2=300
y2=450нарисуй отрезок, это не сложно, и втыкай под каким он углом к оси Х расположен.

supernewbie
18.03.2011, 21:33
отрезок? это же прямая по факту, как она может быть расположена под уголом к осе х?? *ля у меня просто мозг превращается в растаевшее мороженное от этой геометрии, я просто не могу ассоциировать с реальностью все эти углы

destructor
18.03.2011, 21:35
ну нарисуй прямую блин=)

Hint
18.03.2011, 21:38
А как она должна быть расположена относительно оси X (на плоскости)? Вообще без угла? Даже без нулевого? Мы говорим об одинокой точке?

Добавлено через 1 минуту
Мне кажется, автору надо переходить в гуманитарную область...

supernewbie
18.03.2011, 21:40
ну и че
180 450
300 450, получается
120 0, гипотинуза 120 и что дальше, как из этого 90 то получить что за бред?? делю 0 на 120 получается 0, и что дальше? какие катеты какие отношения

Добавлено через 31 секунду
ну прямую нарисовал, и что дальше

Hint
18.03.2011, 21:43
делю 0 на 120 получается 0, и что дальше?
Дальше действовать согласно плану.

supernewbie
18.03.2011, 21:44
tan=0
arctan=0

Hint
18.03.2011, 21:46
tan=0
arctan=0
И что не нравится?

Добавлено через 1 минуту
За это время уже можно было бы 100 отрезков нарисовать и посчитать 100 углов. Не нравится угол в 0 радиан? Нарисуй другой.

supernewbie
18.03.2011, 21:47
но на самом то деле там 90 угол, а нихера не 0!
или я начинаю с ума сходить уже

Hint
18.03.2011, 22:04
но на самом то деле там 90 угол, а нихера не 0!
или я начинаю с ума сходить уже

Могу предложить прибавлять к результату pi/2 ;)

destructor
18.03.2011, 22:12
Могу предложить прибавлять к результату pi/2это корректировка результатов эксперимента, не учи детей плохому.

но на самом то деле там 90 угол, а нихера не 0!скриншот или балабол

supernewbie
18.03.2011, 22:13
GameLine:=TLine.Create(Engine.Objects.Lines);
GameLine.color:=RGB(63,70,87);
GameLine.x:=180;
GameLine.y:=450;
GameLine.len:=700;
GameLine.angle:=90;

destructor
18.03.2011, 22:19
ух епть...


а так чо нарисует: GameLine.angle:=0; ?

supernewbie
18.03.2011, 22:20
----

destructor
18.03.2011, 22:20
короч угол у тебя задается относительно оси Y

supernewbie
18.03.2011, 22:23
и че делать?

destructor
18.03.2011, 22:24
противолежащийкатет:=y2-y1;
прилежащийкатет:=x2-x1;
тангенс: = противолежащийкатет / прилежащийкатет;
угол:= ArcTan( тангенс );
чтобы его получить тут, используй котангенс

supernewbie
18.03.2011, 22:29
dx:=value-x;
dy:=ey-y;
path:=Sqrt(sqr(dx)+sqr(dy));
if dy>0 then
tan:=dx/dy else tan:=0;
angle:=Round((ArcTan(tan)*180)/pi);
len:=round(path);

угол 0

Добавлено через 1 минуту
погите

Nickers
18.03.2011, 22:31
Ученые выяснили, что тангенс 90 градусов = 0... Гарантирую.

supernewbie
18.03.2011, 22:31
госпади

Nickers
18.03.2011, 22:32
А че те сделать то надо я чет не вкурил?

supernewbie
18.03.2011, 22:35
1: result:=x+Round(len * cos((angle*pi)/180));
2: result:=y+Round(len * sin((angle*pi)/180));
меняешь местами cos sin и угол задается Y, обратно - X хм)
интересно)

destructor
18.03.2011, 22:39
Ученые выяснили, что тангенс 90 градусов = 0... Гарантирую.ага, вот пруфлик http://www.wolframalpha.com/input/?i=%D1%83+%3D+tan%28x%29

Добавлено через 2 минуты
dx:=value-x;
dy:=ey-y;
path:=Sqrt(sqr(dx)+sqr(dy));

if dy>0 then
angle:=Round((ArcTan(dx/dy)*180)/pi);
else
angle:=90 градусов нах;

len:=round(path);

supernewbie
18.03.2011, 22:44
по ходу нашёл, если пишу
GameLine.ey:=460;
GameLine.ex:=880; - всё ок, 89 градусов грит

GameLine.ex:=880;
GameLine.ey:=460; - 0, какого черта..

Добавлено через 32 секунды
нука)

Добавлено через 56 секунд
О БОЖНЕ

Добавлено через 30 секунд
как же я ахерел..

Добавлено через 41 секунду
работает, нятый насос..

Nickers
18.03.2011, 23:17
:boast: Не за что. :crazy:

supernewbie
19.03.2011, 00:03
и 270 тоже 0? что за нах

Добавлено через 1 минуту
че-то не то да

Yegor
19.03.2011, 00:15
Эти функции вроде бы с градусами сразу работают а не с радианами.

supernewbie
19.03.2011, 00:27
во че нашел

function sgn (a : real) : real;
begin
if a < 0 then result := -1
else result := 1;
end;

function atan2(y, x : real) : real;
begin
if x > 0 then result := arctan (y/x)
else if x < 0 then result := arctan (y/x) + pi
else result := pi/2 * sgn (y);
end;