Syntaxis: LINE([G],points_definition, lines_definitions, otation_matrix of
{rotation_matrix of -1, ["N"], [{eye_x, eye_y, eye_z} of -1], [{3Dxmin,
3Dxmax, 3Dymin, 3Dymax, 3Dzmin, 3Dzmax}]}, [zstring])
Syntaxis: LINE([G],pre_rotated_points, line_definitions, [zstring])
Met de basisvorm van LINE_P wordt in de opgegeven kleur een lijn getekend tussen opgegeven
pixelcoördinaten in de afbeelding.
Met de geavanceerde vorm van LINE_P kunnen tegelijkertijd meerdere lijnen worden getekend met een
potentiële 3D-transformatie van de hoekpunten van de driehoek.
Deze vorm wordt meestal gebruikt als u een set hoekpunten en lijnen hebt en deze allemaal tegelijk wilt
weergeven (wat dus sneller is).
points_definition is een lijst of matrix van puntdefinities. Elk punt wordt gedefinieerd door twee tot
vier getallen: x, y, z en kleur. Een geldige puntdefinitie kan meerdere vormen hebben. Hier volgen enkele
voorbeelden: [x, y, z, c], {x, y, z, c}, {x, y, #c}, {(x, y), c}, (x,y). U kunt een vector van punten gebruiken in plaats
van een lijst. In dat geval kunnen de punten worden uitgedrukt als complexe getallen.
line_ definitions is een lijst of matrix van lijndefinities. Elke regel wordt gedefinieerd door twee tot
vier getallen: p1, p2, kleur en alfa. P1 en p2 zijn de index in de points_definition van de twee punten
die de lijn definiëren. Kleur wordt gebruikt om de kleurdefinitie per punt te overschrijven. Als u wel een Alfa-
waarde maar geen kleur moet opgeven, gebruikt u -1 voor de kleur.
Ook {Kleur, [Alfa], lijn_1, ..., lijn_n} is een geldige vorm om te voorkomen dat voor elke
lijn steeds opnieuw dezelfde kleur moet worden opgegeven.
rotation_matrix is een matrix van 2*2 tot 3*4 groot die de rotatie en translatie van het punt specificeert
met de gebruikelijke 3D- of 4D-geometrie.
{eye_x, eye_y, eye_z} definieert de oogpositie (projectie).
{3Dxmin, 3Dxmax, 3Dymin, 3Dymax, 3Dzmin, 3Dzmax} wordt gebruikt om de reeds
getransformeerde objecten bij te snijden in 3D.
Elk punt wordt geroteerd en vertaald door vermenigvuldiging van de rotation_matrix. Het punt wordt
vervolgens geprojecteerd in de weergave met de oogpositie berekend door de volgende vergelijking:
x=eye_z/z*x-eye_x en y=eye_z/ z*y-eye_y.
Elke lijn wordt bijgesneden in 3D indien hiervoor gegevens zijn opgegeven.
Als "N" is opgegeven, worden de Z-coördinaten na rotatie genormaliseerd tussen 0 en 255 om gemakkelijker
z-clipping te kunnen uitvoeren.
Als er een z-waardereeks is opgegeven, vindt de z-clipping per pixel plaats op basis van de z-reeks (zie
onder).
Met LINE_P wordt een tekenreeks geretourneerd die alle getransformeerde punten bevat. Als u TRIANGLE of
LINE meerdere keren achter elkaar wilt aanroepen met dezelfde punten en transformatie, kunt u dit doen
door de points_definition te vervangen door deze tekenreeks en de transformatiedefinitie weg te laten in
volgende aanroepen voor TRIANGLE en LINE.
Over z-reeksen:
Met TRIANGLE_P([G]) wordt een tekenreeks geretourneerd die is aangepast voor z-clipping.
Als u z-clipping wilt gebruiken, roept u TRIANGLE_P aan voor het maken van een z-reeks (geïnitialiseerd bij
255 voor elke pixel). Vervolgens kunt u LINE_P aanroepen met bijbehorende z-waarden (0-255) voor elk
hoekpunt van de driehoek. Met LINE_P worden dan geen pixels getekend verder dan de pixels die al
getekend zijn. De z-reeks wordt automatisch bijgewerkt.
Programmaopdrachten 637