как сделать вращение окружности... !! на pascal, пример колесо от велосипеда
renesko1
21.06.2008 20:08
Вот сделал из старой проги, которая была написана как тест к модулю. Правдо все коряво из-за того, что она не была предназначена для рисования великого колеса(хаболгисты из fallout) но все же. Нажмите для просмотра прикрепленного файла
Добавлено через 2 мин. расстояние лучше задай около 200, а delay взависемости от твоего компа в целом 1000 это 1 сек.
Добавлено через 4 мин. черт забыл код... Нажмите для просмотра прикрепленного файла delay можно и 0 так лучше, а дополнительнвй луч это моя погрешность у меня окружность равна 6.3 радиан.
Добавлено через 3 мин. Введите кол во базовых точек 8 Расстояние от центра 200 delay - 0 вот неплохая комбинация
Гость
21.06.2008 20:44
renesko1, а можешь сделать, еще, что нибудь типа чтобы при нажатии на клавищу курсора влево, колесо куртилось влево, и вправо также, и чтобы их было два, на одном экране..
renesko1
21.06.2008 21:09
Каламбур и бред в коду, бузумство копирования и непристойность стиля : у тебя эту прогу наверное не возьмут. Но у меня приступ альтруизма .
program arci;
uses graph, crt, unitlinkedList ;
const
krug = 6.3 ; grDriver : integer = Detect ;
var
l, l1 : linkList ; Colvo, grMode : integer ; Npoint1, Npoint2 : integer ; cer : real ; stepAlfa, alfa : real ; i, max, time : integer ;
x := round(x0 + cos ( alfa ) * cer ) ; //ключевая формула ей надо use если точки ориентированы вокруг оси y := round(y0 + sin ( alfa ) * cer ) ; // alfa = angle(rad) ; cer = length from center
for i := 0 to max do begin if j = 1 then alfa := alfa + stepalfa + 0.1 else alfa := alfa + stepalfa - 0.1 ; // delay(100); l.extrackt(i, x, y); setcolor(0); line(x0, y0, x, y); x := round(x0 + cos ( alfa ) * cer ) ; y := round(y0 + sin ( alfa ) * cer ) ; setcolor(15); line(x0, y0, x, y); l.delbykey(i); l.addinend(x,y); end ;
max := l1.richtkey ; for i := 0 to max do begin if j = 1 then alfa := alfa + stepalfa + 0.1 else alfa := alfa + stepalfa - 0.1 ; // delay(100); l1.extrackt(i, x1, y1); setcolor(0); line(xx, yy, x1, y1); x1 := round(xx + cos ( alfa ) * cer ) ; y1 := round(yy + sin ( alfa ) * cer ) ; setcolor(15); line(xx, yy, x1, y1); l1.delbykey(i); l1.addinend(x1,y1); end ;
delay(time);
end ;
readln ;
end .
Добавлено через 10 мин. если хочешь про вращение вправо влево менять динамически то сделая переменную bool и меняй направление вз от ее значения ввод с клавы не останавливая прорисрвку
procedure cursor_keys ;
var
key : char ;
begin
if keypressed then begin key := readkey ; case ord(key) of /// коды клавишь и дейсвия 45 : .... 34: ....
end ;
end ; end ;
Гость
21.06.2008 22:01
спасибо
renesko1
21.06.2008 22:23
Всегда пожалуйсто
Гость
21.06.2008 22:57
прощу прощения, но у меня при компиляции ругается unitlinkedList .tpu ??
renesko1
21.06.2008 23:02
Сложи все что я переслал в одну кучу. А модуль засунь в папку с модулями. unitlinkedList .tpu это модуль вроде я его выложил. смотри архив с названием dop
Гость
21.06.2008 23:07
у тебя ася есь
renesko1
21.06.2008 23:09
Зарегестрируйся и напиши в приват (кажется) а так нет.
foxix
21.06.2008 23:17
зарегился
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.