![]() |
|
|
![]()
|
|
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Вот написал небольшую прогу, которая рисует "сферу"
Я знаю, что это полное фуфло, поэтому хочу спросить как по-людски рисуются элепсы, ну и если кто знает сферы -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
А почему во флейм? Это тема для раздела по алгоритмам, ИМХО
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Ой, я че-то не додумался. Можешь перенести?
-------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Нет, это к Админу и Серёге - кстати давненько он не появлялся...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
||||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
А не на OpenGL это делать нужно?
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Не, я хотел спроить как это впринципе делается -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Я тебя не понял. Если тебе сферу надо нарисовать на плоском мониторе, (а других пока нет) надо нарисовать просто круг. А если 3-хмерную картинку, то это работа с тенями, светом ...
Эллепсоиды, кажись -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Забудем про сферу.
Как
(Не так же мазохистски как у меня). -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
Синусы и косинусы придумали трусы ;)
Вот код на обычном Паскале:
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
ну не сказал бы я что это обычный паскаль -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Я тут пару дней как с asm'ом общаюсь и понял целых две процедуры: procedure graph256 и procedure close256 первая "заход" в граф. режим другая выход.
Дальше мне нужен криптограф -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
Да я просто прикололся ;)
Хотя там действительно нету синусов: одно умножение: // Вход: x,y - координаты центра // color - цвет // a и b - коэффициенты растяжения из уравнения эллипса: // a*x^2+b*x^2=r^2 // r - радиус // Загружаем в es адрес видеобуфера (0xA0000) push 0a000h pop es // Вычисляем в xc = x - r mov cx,r mov ax,x sub ax,cx mov xc,ax // Вычисляем в yc = y - r mov ax,y sub ax,cx mov yc,ax // Вычисляем r^2 и будем хранить его в bx mov ax,cx mul ax mov bx,ax // Число проходов по X и Y равно 2*R + 1 (по обе сторны от x и y) shl cx,1 inc cx mov si,cx // Храним его в si @ScanY: // Проход по yc = y - r ... y ... y + r push cx mov cx,si push xc // Проход по xc = x - r ... x ... x + r @ScanX: // Вычисляем xc-x mov ax,xc sub ax,x // Разницу xc-x возводим в квадрат imul ax // Квадрат домножаем на a mul a // Сохраняем р-т в стеке push ax // Вычисляем yc-y mov ax,yc sub ax,y // Разницу yc-y возводим в квадрат imul ax // Квадрат домножаем на b mul b pop dx // Вычисялем a*(xc-x)^2+b*(yc-y)^2 add ax,dx // Если эта штука <= r^2, то рисуем пиксель цветом color cmp ax,bx ja @NoPaint // Отрисовка пикселя mov ax,320 mul yc add ax,xc mov di,ax mov al,color mov es:[di],al @NoPaint: // Следующий xc inc xc loop @ScanX pop xc pop cx // Следующий yc inc yc loop @ScanY end; ... ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Блин, как все сложно с этим асмом
-------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
Да ладно ;) Вот вопрос на засыпку: typedef unsigned char byte; typedef unsigned long u32; ... u32 x; byte key[4] = {0x01,0x02,0x03,0x04} ... x = key[0] << 24 | key[1] << 16 | key[2] << 8 | key[3]; А теперь вопрос: что будет в результате в x ? ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Че-то я нихрена не понял:
typedef unsigned char byte; typedef unsigned long u32; Это че-то из C++ (наверно) (я сним не в таких ладах чтобы понять это) u32 x; byte key[4] = {0x01,0x02,0x03,0x04} первая строка незнаю че делает, вторая походу массив (наверно) x = key[0] << 24 | key[1] << 16 | key[2] << 8 | key[3]; Это я ваще не знаю че такое. -------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Да, я тоже сначала пытался это "прочитать". А там этих строк ой-ой-ой!!! Не разобрать. Дело в том, что << имеет больший приоритет чем |. А |, в свою очередь, берет то что справа сначала!!! Чтобы эту строку анализировать надо запустить рекурсивный алгоритм В конце получится 772 (честно говоря, я проверил, но посмотрел и код). Для особо заинтересованных: скомпилируйте это и через td откройте файл. 2Chingachguk: Так как дела с прогой? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
> neutrino Дата сообщения: 11.11.2002,16:39
> Да, я тоже сначала пытался это "прочитать". А там этих строк ой-ой-ой!!! > Не разобрать. Не, написано как раз все понятно. > Дело в том, что << имеет больший приоритет чем |. А |, в свою очередь, > берет то что справа сначала!!! Чтобы эту строку анализировать надо > запустить рекурсивный алгоритм . Я не смотрел особо, какой-такой приоритет, я от смысла шел. А по смыслу должно быть 0x01020304. > В конце получится 772 (честно говоря, я проверил, но посмотрел и код). Вот видишь ! Ты чем компилил ? Я - bc.310. В ассемблерном листинге было видно, что код ОТРЕЗАЕТ старшие два байта результата промежуточных вычислений: генерит что-то вроде: shl ax,24 // !!! Даже если делать в явном виде указание: (u32)key[0]<<24, то код(ассемблерный) меняется, но этого ... недостаточно !!! > Для особо заинтересованных: скомпилируйте это и через td откройте файл. А самое смешное в этом СИ то, что все это в VC(винды)... работает ! А все потому, что там 32 разряда. Вообще специалист по СИ(работает рядом со мной) говорит, что скорее ВЕРНО РАБОТАЕТ именно bc - те не работает... Потому, как по правилам (?) результат должен приводиться (если явно не указано) к наименьшему типу ! > 2Chingachguk: Так как дела с прогой? Пока особо никак ;( Работа почему-то мешает ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: нет Всего: 54 |
Нашел по F1 в Делфи... :0) Или я не понял вопроса...
Draws the ellipse defined by a bounding rectangle on the canvas. procedure Ellipse(X1, Y1, X2, Y2: Integer); overload; procedure Ellipse(const Rect: TRect); overload; Description Call Ellipse to draw a circle or ellipse on the canvas. Specify the bounding rectangle either by giving The top left point at pixel coordinates (X1, Y1) and the bottom right point at (X2, Y2). A TRect value. If the bounding rectangle is a square, a circle is drawn. The ellipse is outlined using the value of Pen, and filled using the value of Brush. Note: On Windows 95, the sums X1 + X2 and Y1 + Y2 cannot exceed 32768. Also, the sum X1 + X2 + Y1 + Y2 cannot exceed 32768. -------------------- ![]() |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
Не, вопрос был немного не в этом. Эти процедуры я знаю я спросил как они работают, т.е. как в принципе рисуется эллипс (да еще так быстро).
-------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
насколько я понял тот алгоритм без тригонометрии, то
еще такой вопрос появился - как нарисовать эллипс, вытянутый (сжатый) не парралельно осям, а например по прямой y=x? -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Chingachguk |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
Ага ;)
В смысле - повернутый на угол относительно осей ? Подумаю об этом ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||
|
|||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
во-во -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
А нельзя использовать формулы поворота с тригонометрией?
2Chingachguk: А прогу я компилил сначала на VС а потом на ВС. Что-то я наглючился так, что потом на екзамене по SQL писал всякие сдвиги таблиц -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
IMHO с целочисленными матрицами оно как-то не так будет -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Dexter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1562 Регистрация: 2.7.2002 Где: Москва, Бирюлево Репутация: нет Всего: 4 |
2 исходника которые давал MuToGeN работают, но в первом чем больше радиус тем дальше точки друг от друга, во втором он мне рисует вообще точек 10.
-------------------- The only thing you really know about me is... ...that's all you'll ever know |
|||
|
||||
| MuToGeN |
|
||||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
в первом тебе надо уменьшить шаг в цикле, во втором - в строке
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
||||
|
|||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 18 |
Как говорят китайцы, дорога в тысячу миль начинается с 1 шага ;))) Там есть прикольный барьер, не знаю, налетел ли ты на него ... -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |