ďťż

Ładny brzuch

Czy ktos mógłby mi podać kod funkcji lineto lub innej napisanej przez siebie funkcji rysującej linię w Pascalu najlepiej w Delphim? (nie chodzi mi tu o użycie lineto) [:/]

pozdrawiam
kind



Czyżby zadany problem był za trudny:? Mój post jest tu od ponad doby i żadnej wskazówki:?

pozdrawiam
kind

NP: canvas.LineTo(20,50);
| L Y`owa współrzędna
x`owa współrzędna

//----------------------
gg :3183960
SZUKAM BETATESTERÓW - chętnych prosze o kontakt mail/gg

Jak napisałem na początku nie interesuje mnie tutaj użycie lineto(x,y) czy wykorzystanie funkcji sinus i cosinus bo wiem jak tego używać. Chodzi mi tutaj o podanie kodu (algorytmu) rysowania odcinka czy linii.

pozdrawiam
kind



Ten problem jest za trudny :! Albo ja jestem ciemny, albo Ty źle zadajesz pytanie. Nie mam pojcia o co Ci chodzi :(

cytat:
Czy ktos mógłby mi podać kod funkcji lineto lub innej napisanej przez siebie funkcji rysującej linię w Pascalu najlepiej w Delphim? (nie chodzi mi tu o użycie lineto)

To lineto czy nie lineto :?

----
m@il: ali88@tlen.pl
GG: 2083160

cytat:Kind_Pax napisał:

Czyżby zadany problem był za trudny:? Mój post jest tu od ponad doby i żadnej wskazówki:?

Kind_Pax, takimi postami raczej nie zwiększasz szans na uzyskanie odpowiedzi - wręcz przeciwnie, obniżasz je.

Wiem o co Ci chodzi i miałem (mam?) taką procedurę - ale narazie nie mam czasu jej szukać (jak jest to pewnie leży na jakimś CD). Rozejrzę się za nią jak będe miał trochę czasu (chyba, że ktoś Ci wcześniej pomoże).

ICQ : 245-363-570

Dzięki Oxi będę czekał na odpowiedź. Chyba na to pytanie odpowie mi tylko któryś z moderatorów lub inny równie z dużą wiedzą.
Co do tych, którzy nie wiedzą za bardzo o co mi chodzi. Wiem jak użyć polecenie lineto(x,y) czy inne wykorzystujące funkcję sinus czy cosinus. Chodzi mi mianowicie o to, żeby ktoś podał mi algorytm czy kod, który rysuje odcinek. Przykładowo mam punkt (x,y) początkowy i końcowy i chce, aby algorytm narysował mi odcinek.
Szukałem tego przez kilka dni w sieci i nic (nawet na stronie borlanda szukałem).

pozdrawiam
kind

Mam kod na rysowanie lini ale tylko pionowych i poziomych napisany w Pascalu i Asemblerze pod tryb 13h, jak chcesz to moge go tu zapodać :).

W Pascalu to: Line(x1,y1,x2,y2);
Oczywiście użyj modułu Graph.

Ed

Ok NeVeS zapodawaj :) Może jak go zobacze to mnie olśni :D i może uda mi się go przerobić.

pozdrawiam
kind
gg: 1482111

procedure rysuj_pionowa_linia_13h(x, y1, y2 : word; kolor : byte);
begin
asm
mov cx, y2 //l
sub cx, y1 //-
add cx, 1 //+
mov ax, y1 //l
mov di, ax //l
shl ax, 8 //<<
shl di, 6 //<<
add di, ax //+
add di, x //+
mov ax, 0a000h //l
mov es, ax //l
mov al, kolor //l
@rysuj_linie: //e
mov es:[di], al //s
add di, 320 //+
loop @rysuj_linie //dec jump
end;
end;

procedure rysuj_pozioma_linia_13h(x1, x2, y : word; kolor : byte);
begin
asm
mov cx, x2 //l
sub cx, x1 //-
add cx, 1 //+
mov ax, y //l
mov di, ax //l
shl ax, 8 //<<
shl di, 6 //<<
add di, ax //+
add di, x1 //+
mov ax, 0a000h //l
mov es, ax //l
mov al, kolor //l
cld //z
rep stosb //s
end;
end;

Duzo tego pascala:), jak ten kod cie nie oswieci to daj znać to poszukam funkcje rysujaca linie (gdzieś to mam, tylko nie wiem gdzie;)).

---------------------------------
..::NeVeS::..
"DOCERE, MOVERE, DELECTARE"
---------------------------------
[/h6]

Najpierw musisz znalezc wzor funkcji liniowej przechodzacej przez odbydwa punkty. Nastepnie dla odpowiednich wartosci x kolejnych pikseli znajdujacych sie pomiedzy tymi punktami obliczasz na podstawie otrzymanego wzoru ich wspolrzedne y. Wyniki zaokraglasz w gore i rysujesz je na ekranie.

'...a wtedy powstanę i zdobędę świat!' - Marcin Robaszyński

NeVes dzięki za kod, ale raczej mnie nie oświeciło ;) Pokombinuje z funkcjami liniowymi jak radzi ROB4L.
Ludzie THX 4 ALL :thx2:

pozdrawiam
kind
gg: 1482111

O co chodzi z tymi 'wartosciami x kolejnych pikseli znajdujacych sie pomiedzy tymi punktami':

Powiedzmy ze mamy dwa punkty: A=(2,1) i B=(6,8). 'Punkty pomiedzy tymi punktami' to kolejno: (3,y);(4,y);(5,y).

Pisze o tym bo troche to zagmatwanie napisalem.

'...a wtedy powstanę i zdobędę świat!' - Marcin Robaszyński

http://brackeen.com/...vga/shapes.html gotowe algorytmy i implementacja dla DOS-a (wstawki assemblerowe) - w C ale łatwo przeniść do Pascala.

_______________________________________________________________________
Zajrzyj na http://hno.freeshell.org - artykuły, tipsy, soft, programowanie, Linux i inne.

Znalazłem :)To funkcja którą kiedyś napisałem, operuje na liczbach całkowitych:
var x,x1,x2,y,y1,y2,a1,a2,i:Integer;
Begin
x1,x2,y1,y2//wczytaj wspólrzedne tych dwóch punktów
a1:=y2-y1;
a2:=x2-x1;
for i=x1 to x2 do
Begin
y:=(((a1(i-x1))div)a2)+y1;
// tutaj połuż pixel na współrzednych [i,y]
End;
Jest to dość atare i niepamientam czy działało:)

Edytowany przez - NeVeS - 2004/07/23 14:15:59

Oto przykład:

MoveTo(0,0);
LineTo(20,20);

piotroh@o2.pl

cytat:piotroh napisał:

Oto przykład:

MoveTo(0,0);
LineTo(20,20);

HAHAHA :cheesy::cheesy::cheesy::twisted: LOL :P
Jesteś nowy na tym forum, więc powiem ci tylko tyle... CZYTAJ CAŁY TEMAT ZANIM COĄ W NIM NAPISZESZ :cheesy: :P

Ja też dałem plamę.Jeżeli chodzi o program w asemblerze kreślenia prostej przechodzącej przez dwa punkty,to mam taki program,ale jest długi dlatego go nie przytaczam.Jeżeli chodzi o równanie prostej przechodzącej przez 2 pkty A(x1,y1);
B(x2,y2) to:
y-y1=(y2-y1)/(x2-x1) * (x-x1);
Sorry za poprzedni post.

Ed

Widze, że zainetersowanie tematem znacznie się ożywiło. Już wiem jak sobie poradzić z tym zagadnieniem zabiorę sie do tego zaraz we wrześniu (teraz robie edytor stronek www). Jezeli chcielibyście jeszcz mi pomóc jest jedno pytanie, na które wciąż nie znam odpowiedzi. Klikajcie na link poniżej.
http://www.ks-eksper...?TOPIC_ID=14737

Jeszcze raz wielkie dzięki za pomoc :thx:

pozdrawiam
kind
gg: 1482111

Niestety największą liczbą całkowitą w Pascalu jest liczba z przedziału (-2)^63+1 do
2^63-1,Jest to liczba typu comp.Także w FreePascalu liczb rzędu 10^100 nie można zapisać.Mozna tu zapisać max 2^64-1 jako qword.

Ed

Kiedyś już pisałem o takich liczbach:
http://www.ks-eksper...sp?T...s=du%BFe,delphi

-------------- ------------- ------------- --------------- ------
|Korona Kielce - Jagiellonia Białystok 31 lipca, 17:00                |
|Widzew Łódź  - Korona Kielce 7 sierpnia, 18:00                       |
|Korona Kielce - Ąwit Nowy Dwór Mazowiecki 14 sierpnia, 17:00 |

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •