Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сфера 
:(
    Опции темы
Dexter
Дата 8.11.2002, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Вот написал небольшую прогу, которая рисует "сферу"

Код

var
 s,f: integer;
begin
 for f:=0 to 30 do
 for s:=1 to 100000 do begin    
      canvas.Pixels[round(sin(s)*f*10)+width div 2,round(cos(s)*300)+height div 2]:=clBlack;
      canvas.Pixels[round(sin(s)*300)+width div 2,round(cos(s)*f*10)+height div 2]:=clBlack;
 end;
end;

Я знаю, что это полное фуфло, поэтому хочу спросить как по-людски рисуются элепсы, ну и если кто знает сферы  :D


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Vit
Дата 8.11.2002, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Dexter
Дата 9.11.2002, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Ой, я че-то не додумался. Можешь перенести?


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Vit
Дата 9.11.2002, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
podval
Дата 10.11.2002, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



PM WWW ICQ   Вверх
neutrino
Дата 10.11.2002, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



А не на OpenGL это делать нужно?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Dexter
Дата 10.11.2002, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Цитата
А не на OpenGL это делать нужно?


Не, я хотел спроить как это впринципе делается


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
neutrino
Дата 11.11.2002, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Я тебя не понял. Если тебе сферу надо нарисовать на плоском мониторе, (а других пока нет) надо нарисовать просто круг. А если 3-хмерную картинку, то это работа с тенями, светом ...
Цитата

как по-людски рисуются элепсы,

Эллепсоиды, кажись :)


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Dexter
Дата 11.11.2002, 05:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Забудем про сферу.

Как
Цитата
Эллепсоиды
рисуются.
(Не так же мазохистски как у меня). :D


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
MuToGeN
Дата 11.11.2002, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Код

#define pi 3.14
int xCenter=координата центра X;
int yCenter=координата центра Y;
int xRadius=радиус по X;
int yRadius=радиус по Y;
double i;
for(i=0;i<pi*2;i+=0.01)
 canvas.Pixels[ceil(cos(i)*xRadius+xCenter)][ceil(sin(i)*yRadius+yCenter)]=clBlack;
только это на С


--------------------
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!
PM MAIL ICQ   Вверх
Chingachguk
Дата 11.11.2002, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



Синусы и косинусы придумали трусы ;)

Вот код на обычном Паскале:

Цитата

{$N+}
{$A-}
{$G+}
uses crt;
procedure graph256;
 begin
   asm
   mov  ax,13h; int  10h
   end;
 end;
procedure close256;
 begin
   asm
   mov  ax,03h; int  10h
   end;
 end;
procedure Ellipse256(color:byte; r,x,y:word; a,b: word);
 var
   xc,yc: word;
 begin
   asm
     push 0a000h
     pop  es
     mov  cx,r
     mov  ax,x
     sub  ax,cx
     mov  xc,ax
     mov  ax,y
     sub  ax,cx
     mov  yc,ax
     mov  ax,cx
     mul  ax
     mov  bx,ax
     shl  cx,1
     inc  cx
     mov  si,cx
@ScanY:
     push cx
     mov  cx,si
     push xc
@ScanX:
     mov  ax,xc
     sub  ax,x
     imul ax
     mul  a
     push ax
     mov  ax,yc
     sub  ax,y
     imul ax
     mul  b
     pop  dx
     add  ax,dx
     cmp  ax,bx
     ja   @NoPaint
     mov  ax,320
     mul  yc
     add  ax,xc
     mov  di,ax
     mov  al,color
     mov  es:[di],al
@NoPaint:
     inc  xc
     loop @ScanX
     pop  xc
     pop  cx
     inc  yc
     loop @ScanY
   end;
 end;
begin
 graph256;
 Ellipse256(9,10,20,20,1,1);
 Ellipse256(14,20,70,50,3,1);
 Ellipse256(31,30,170,100,1,5);
 repeat until keypressed;
 close256;
end.



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
MuToGeN
Дата 11.11.2002, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Цитата(Chingachguk @ 11.11.2002, 13:59)
Синусы и косинусы придумали трусы ;)
Вот код на обычном Паскале:

ну не сказал бы я что это обычный паскаль :) может пояснишь что к чему в твоем алгоритме (который без синусов и косинусов) ламерам, не понимающим асма (типа меня)?


--------------------
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!
PM MAIL ICQ   Вверх
Dexter
Дата 11.11.2002, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 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
PM MAIL ICQ   Вверх
Chingachguk
Дата 11.11.2002, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 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.
PM MAIL ICQ   Вверх
Dexter
Дата 11.11.2002, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Блин, как все сложно с этим асмом


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.