Вверх ↑
Этот топик читают: Гость
Ответов: 899
Рейтинг: 43
#1: 2009-03-25 22:08:04 ЛС | профиль | цитата
Задача на первй взгляд простая, но я уже запутался

имеется окно для отрисовки графика с Width и Height
также имеются координаты осей
ось Х - Height/2 - переменная %1 (Y=0 на графике)
ось Y - Width/2 - переменная %2 (X=0 на графике)
т.е окно разделено осями строго пополам и мне надо нарисовать нормальные графики учитывая сдвиги этих осей, например график функции Y=sin(X)
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2009-03-25 22:26:04 ЛС | профиль | цитата
Yr = sin(Xr)

Xp = %1 + Xr
Yp = %2 - Yr

где Xr, Yr - расчетные координаты точки
Xp, Yp - реальные координаты точки относительно осей с центром в (%1, %2)
карма: 27
0
Ответов: 899
Рейтинг: 43
#3: 2009-03-28 03:44:02 ЛС | профиль | цитата
Dilma, спасибо, не все так сложно как казалось

но

появилась другая проблема - рисовать графики таких функций как
Y=1/X
Y=sinc(X)=sin(pi*X)/(pi*X)

и т.п. где при Х=0 знаменатель обращается в 0 а Y уходит в бесконечность

я так думаю надо ввести проверку на максимальное значение по Y и если оно превышает габариты окна то X в этом диапазоне можно пропустить и одновременно пропускать значения где знаменатель обращается в ноль?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8961
Рейтинг: 824
#4: 2009-03-28 09:29:20 ЛС | профиль | цитата
unalex, всегда надо проверять на деление на 0, корень из отрицательного числа .... (кстати Y=sinc(X)=sin(pi*X)/(pi*X) при х=0 Y=1 плохие были у Вас преподаватели )

карма: 19

0
Ответов: 899
Рейтинг: 43
#5: 2009-03-28 15:14:42 ЛС | профиль | цитата
Леонид, верно подметил, эт я попутал немного, мы как раз сейчас учим дельта функции и в случае если

Y=k*sinc(X/k) - при к стремяшимся к бесконечности, Y тоже уходит в бесконечность
а нормальный sinc действительно равен единице при Х=0, хотя как получить эту единицу в HiAsm я не имею представления

вот дельта функцию нарисовать наверное не получится

[size=-2]------ Добавлено в 15:14
Скажите почему получается такая белиберда
Add(MainForm,2953706,21,105)
{
Height=679
link(onCreate,10164931:doFor,[(75,125)(75,202)])
}
Add(StringTable,2157867,497,196)
{
Left=5
Top=5
Width=165
Height=635
Columns=#8:Значение|8:Сдвинуто|
StrDelimiter="#"
}
Add(For,10164931,98,196)
{
End=20
link(onEvent,8887007:doFor,[])
}
Add(For,8887007,175,196)
{
End=10
IncludeEnd=1
link(onEvent,3680725:doOperation,[])
}
Add(Math,3680725,238,196)
{
OpType=3
Op2=10
link(onResult,8835077:doOperation,[])
}
Add(Math,8835077,301,196)
{
link(onResult,492249:doOperation,[])
link(Op2,10164931:Position,[(314,184)(143,184)(143,247)(104,247)])
}
Add(Math,492249,364,196)
{
OpType=1
Op2=10
link(onResult,4314221:doString,[])
}
Add(FormatStr,4314221,427,196)
{
Mask="%1#%2"
link(onFString,2157867:doAdd,[])
link(Str2,8835077:Result,[(440,184)(412,184)(412,245)(307,245)])
}
должны идти значения с шагом 0,1, а получается куча знаков после запятой
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1161
Рейтинг: 160
#6: 2009-03-28 15:53:05 ЛС | профиль | цитата
так попробуй
code_12478.txt
карма: 0

0
файлы: 1code_12478.txt [1KB] [130]
Ответов: 899
Рейтинг: 43
#7: 2009-03-31 01:03:52 ЛС | профиль | цитата
LainX, округлять то можно, но мне все равно интересно, почему такие числа получаются
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2009-03-31 10:22:54 ЛС | профиль | цитата
погрешность
карма: 27
0
Ответов: 8961
Рейтинг: 824
#9: 2009-03-31 13:53:06 ЛС | профиль | цитата
unalex, как заметил Dilma погрешность - погрешность представления десятичных дробей в машинной двоичной системе, например: числа 0.625, 0.5, 0.25 т. е. различные суммы 1/2^n представляются точно, а все остальные, например 0.1 - бесконечной двоичной дробью, которую надо округлять с возникающей при этом погрешностью.
карма: 19

0
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2009-03-31 15:51:13 ЛС | профиль | цитата
пример для ее наглядной демонстрации (нажать кнопку 3-5 раз)

code_12518.txt

карма: 27
0
файлы: 1code_12518.txt [477B] [181]
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)