Rekenhulp gevraagd...

Gewoon even offtopic praten over van alles en nog wat.

Moderator: Moderators

Plaats reactie
zeeschuim

Re: Rekenhulp gevraagd...

Bericht door zeeschuim »

kunnen jullie dit hele verhaal niet eens uit de doeken doen op een meetup?
ik vind het machtig interessant maar wat lichtbeelden op een muur met een gedreven uitleg lijkt me wel wat.
Gebruikersavatar
DaBit
Donateur
Berichten: 11041
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Rekenhulp gevraagd...

Bericht door DaBit »

Zo bedoel ik het; van een kubus zie je nooit meer dan 3 vlakjes dus de helft hoef je niet te tekenen.
En er is een eenvoudige methode om uit te vissen welk vlakje naar je toe gericht staat en welke van je af gericht staat. Maar dat deel bewaar ik nog eventjes. :lol:
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

DaBit schreef:Zo bedoel ik het; van een kubus zie je nooit meer dan 3 vlakjes dus de helft hoef je niet te tekenen.
En er is een eenvoudige methode om uit te vissen welk vlakje naar je toe gericht staat en welke van je af gericht staat. Maar dat deel bewaar ik nog eventjes. :lol:
ja hoe het nog maar even spannend... :-)
zeeschuim schreef:kunnen jullie dit hele verhaal niet eens uit de doeken doen op een meetup?
ik vind het machtig interessant maar wat lichtbeelden op een muur met een gedreven uitleg lijkt me wel wat.
:lol:

tja... kan me voorstellen dat die topic voor veel mensen niet te volgen is...

maar het verhaal gaat er dus over op een "plat" beeldscherm 3D figuren te tekenen...
wel als je hier jezelf in verdiept, waardeer je 3D spellen een stuk meer...

https://www.youtube.com/watch?v=ffbt_QOqL54

bovenstaande valt nog mee, dat is eigenlijk niet echt moeilijk, als je redelijk ben in wiskunde, en sin,cos en tan een beetje door heb....
je werkt voor elk hoekpunt met x,y,z coördinaat en je laat later alleen de x,y zie, en de z gebruik je alleen met het rekenen....

bestaat uit de volgende code:

Code: Selecteer alles

FUNCTION VIRTUAL GLOBAL Naam_3d::Init


if _FirstScan then

reset_naam();

end_if;


END_FUNCTION




FUNCTION VIRTUAL GLOBAL Naam_3d::CyWork
	VAR_INPUT
		EAX 	: UDINT;
	END_VAR
	VAR_OUTPUT
		state (EAX) 	: UDINT;
	END_VAR
  VAR
  	tel: DINT;
  END_VAR


Server0 +=1;

if Server0 = 252 then
Server0:=0;
end_if;

if reset_all<>0 then
reset_naam();
end_if;



Xhoek:=to_real( Sl_Xhoek)/10000;
Yhoek:=to_real( Sl_Yhoek)/10000;
zhoek:=to_real( Sl_Zhoek)/10000;

//---------------------------------------------------------------------------------------------------------------------------
//x rotatie:
//
//x'=x;
//y'=y*cos-z*sin;
//z'=y*sin+z*cos;
if Xhoek<>0 then
for Tel:=1 to 115 do

Ytemp:=pos_y[Tel]-(235);
ztemp:=pos_z[Tel];

pos_y[Tel] := (Ytemp * COS(Xhoek) - Ztemp * SIN(Xhoek))+(235); //nieuwe coordinaten uit rekenen
pos_z[Tel] := (Ytemp * SIn(Xhoek) + Ztemp * COS(Xhoek));

end_for;
end_if;

//---------------------------------------------------------------------------------------------------------------------------
//y rotatie:
//
//x'=x*cos+z*sin;
//y'=y;
//z'=-x*sin+z*cos;
if yhoek<>0 then
for Tel:=1 to 115 do

xtemp:=pos_x[Tel]-205;
ztemp:=pos_z[Tel];

pos_X[Tel] := (Xtemp * COS(Yhoek) + Ztemp * SIN(Yhoek)+205); //nieuwe coordinaten uit rekenen
pos_z[Tel] := -(Xtemp) * SIn(Yhoek) + Ztemp * COS(Yhoek);

end_for;
end_if;
	
//--------------------------------------------------------------------------------------------------------------------------  
//z rotatie:
//
//x'=x*cos-y*sin;
//y'=x*sin+y*cos;
//z'=z;

if Zhoek<>0 then
for Tel:=1 to 115 do

xtemp:=pos_x[Tel]-205;
ytemp:=pos_y[Tel]-235;

pos_X[Tel] := (Xtemp * COS(Zhoek) - Ytemp * SIN(Zhoek))+205; //nieuwe coordinaten uit rekenen
pos_Y[Tel] := (Xtemp * SIn(Zhoek) + Ytemp * COS(Zhoek))+235;

end_for;
end_if;

  
 
  
  
  state := READY;

END_FUNCTION


FUNCTION __CDECL VIRTUAL GLOBAL Naam_3d::Draw
	VAR_INPUT
		pio 	: ^_IO;
		pr 	: ^_RESULT;
		pv 	: ^_VARIABLE;
		input 	: BOOL;
	END_VAR
	VAR_OUTPUT
		retcode (EAX) 	: _DOIT;
	END_VAR

VAR
	act     :  _NEWSCREEN;
END_VAR





push_screen(#act);

Graphic.PutImage(#pio^.image, DEFKOORD, DEFKOORD);


// Letters tekenen

//S
//Laag2
Graphic.line(to_int(pos_x[13]),to_int(pos_y[13]),to_int(pos_x[14]),to_int(pos_y[14]),pio^.attrib,white);  //lijn 13 - point13 to point14
Graphic.line(to_int(pos_x[14]),to_int(pos_y[14]),to_int(pos_x[15]),to_int(pos_y[15]),pio^.attrib,white);  //lijn 14 - point14 to point15
Graphic.line(to_int(pos_x[15]),to_int(pos_y[15]),to_int(pos_x[16]),to_int(pos_y[16]),pio^.attrib,white);  //lijn 15 - point15 to point16
Graphic.line(to_int(pos_x[16]),to_int(pos_y[16]),to_int(pos_x[17]),to_int(pos_y[17]),pio^.attrib,white);  //lijn 16 - point16 to point17
Graphic.line(to_int(pos_x[17]),to_int(pos_y[17]),to_int(pos_x[18]),to_int(pos_y[18]),pio^.attrib,white);  //lijn 17 - point17 to point18
Graphic.line(to_int(pos_x[18]),to_int(pos_y[18]),to_int(pos_x[19]),to_int(pos_y[19]),pio^.attrib,white);  //lijn 18 - point18 to point19
Graphic.line(to_int(pos_x[19]),to_int(pos_y[19]),to_int(pos_x[20]),to_int(pos_y[20]),pio^.attrib,white);  //lijn 19 - point19 to point20
Graphic.line(to_int(pos_x[20]),to_int(pos_y[20]),to_int(pos_x[21]),to_int(pos_y[21]),pio^.attrib,white);  //lijn 20 - point20 to point21
Graphic.line(to_int(pos_x[21]),to_int(pos_y[21]),to_int(pos_x[22]),to_int(pos_y[22]),pio^.attrib,white);  //lijn 21 - point21 to point22
Graphic.line(to_int(pos_x[22]),to_int(pos_y[22]),to_int(pos_x[23]),to_int(pos_y[23]),pio^.attrib,white);  //lijn 22 - point22 to point23
Graphic.line(to_int(pos_x[23]),to_int(pos_y[23]),to_int(pos_x[24]),to_int(pos_y[24]),pio^.attrib,white);  //lijn 23 - point23 to point24
Graphic.line(to_int(pos_x[24]),to_int(pos_y[24]),to_int(pos_x[13]),to_int(pos_y[13]),pio^.attrib,white);    //lijn 24 - point24 to point13
//S
//Hoeken sluiten
Graphic.line(to_int(pos_x[1]),to_int(pos_y[1]),to_int(pos_x[13]),to_int(pos_y[13]),pio^.attrib,white);    //lijn 25 - point1 to point13
Graphic.line(to_int(pos_x[2]),to_int(pos_y[2]),to_int(pos_x[14]),to_int(pos_y[14]),pio^.attrib,white);    //lijn 26 - point2 to point14
Graphic.line(to_int(pos_x[3]),to_int(pos_y[3]),to_int(pos_x[15]),to_int(pos_y[15]),pio^.attrib,white);    //lijn 27 - point3 to point15
Graphic.line(to_int(pos_x[4]),to_int(pos_y[4]),to_int(pos_x[16]),to_int(pos_y[16]),pio^.attrib,white);    //lijn 28 - point4 to point16
Graphic.line(to_int(pos_x[5]),to_int(pos_y[5]),to_int(pos_x[17]),to_int(pos_y[17]),pio^.attrib,white);    //lijn 29 - point5 to point17
Graphic.line(to_int(pos_x[6]),to_int(pos_y[6]),to_int(pos_x[18]),to_int(pos_y[18]),pio^.attrib,white);    //lijn 30 - point6 to point18
Graphic.line(to_int(pos_x[7]),to_int(pos_y[7]),to_int(pos_x[19]),to_int(pos_y[19]),pio^.attrib,white);    //lijn 31 - point7 to point19
Graphic.line(to_int(pos_x[8]),to_int(pos_y[8]),to_int(pos_x[20]),to_int(pos_y[20]),pio^.attrib,white);    //lijn 32 - point8 to point20
Graphic.line(to_int(pos_x[9]),to_int(pos_y[9]),to_int(pos_x[21]),to_int(pos_y[21]),pio^.attrib,white);    //lijn 33 - point9 to point21
Graphic.line(to_int(pos_x[10]),to_int(pos_y[10]),to_int(pos_x[22]),to_int(pos_y[22]),pio^.attrib,white);  //lijn 34 - point10 to point22
Graphic.line(to_int(pos_x[11]),to_int(pos_y[11]),to_int(pos_x[23]),to_int(pos_y[23]),pio^.attrib,white);  //lijn 35 - point11 to point23
Graphic.line(to_int(pos_x[12]),to_int(pos_y[12]),to_int(pos_x[24]),to_int(pos_y[24]),pio^.attrib,white);  //lijn 36 - point12 to point24
//S
//laag1
Graphic.line(to_int(pos_x[1]),to_int(pos_y[1]),to_int(pos_x[2]),to_int(pos_y[2]),pio^.attrib,white);      //lijn 1 - point1 to point2
Graphic.line(to_int(pos_x[2]),to_int(pos_y[2]),to_int(pos_x[3]),to_int(pos_y[3]),pio^.attrib,white);      //lijn 2 - point2 to point3
Graphic.line(to_int(pos_x[3]),to_int(pos_y[3]),to_int(pos_x[4]),to_int(pos_y[4]),pio^.attrib,white);      //lijn 3 - point3 to point4
Graphic.line(to_int(pos_x[4]),to_int(pos_y[4]),to_int(pos_x[5]),to_int(pos_y[5]),pio^.attrib,white);      //lijn 4 - point4 to point5
Graphic.line(to_int(pos_x[5]),to_int(pos_y[5]),to_int(pos_x[6]),to_int(pos_y[6]),pio^.attrib,white);      //lijn 5 - point5 to point6
Graphic.line(to_int(pos_x[6]),to_int(pos_y[6]),to_int(pos_x[7]),to_int(pos_y[7]),pio^.attrib,white);      //lijn 6 - point6 to point7
Graphic.line(to_int(pos_x[7]),to_int(pos_y[7]),to_int(pos_x[8]),to_int(pos_y[8]),pio^.attrib,white);      //lijn 7 - point7 to point8
Graphic.line(to_int(pos_x[8]),to_int(pos_y[8]),to_int(pos_x[9]),to_int(pos_y[9]),pio^.attrib,white);      //lijn 8 - point8 to point9
Graphic.line(to_int(pos_x[9]),to_int(pos_y[9]),to_int(pos_x[10]),to_int(pos_y[10]),pio^.attrib,white);    //lijn 9 - point9 to point10
Graphic.line(to_int(pos_x[10]),to_int(pos_y[10]),to_int(pos_x[11]),to_int(pos_y[11]),pio^.attrib,white);  //lijn 10 - point10 to point11
Graphic.line(to_int(pos_x[11]),to_int(pos_y[11]),to_int(pos_x[12]),to_int(pos_y[12]),pio^.attrib,white);  //lijn 11 - point11 to point12
Graphic.line(to_int(pos_x[12]),to_int(pos_y[12]),to_int(pos_x[1]),to_int(pos_y[1]),pio^.attrib,white);    //lijn 12 - point12 to point1


//W
//Laag2
Graphic.line(to_int(pos_x[37]),to_int(pos_y[37]),to_int(pos_x[38]),to_int(pos_y[38]),pio^.attrib,white);  //lijn 13 - point13 to point14
Graphic.line(to_int(pos_x[38]),to_int(pos_y[38]),to_int(pos_x[39]),to_int(pos_y[39]),pio^.attrib,white);  //lijn 14 - point14 to point15
Graphic.line(to_int(pos_x[39]),to_int(pos_y[39]),to_int(pos_x[40]),to_int(pos_y[40]),pio^.attrib,white);  //lijn 15 - point15 to point16
Graphic.line(to_int(pos_x[40]),to_int(pos_y[40]),to_int(pos_x[41]),to_int(pos_y[41]),pio^.attrib,white);  //lijn 16 - point16 to point17
Graphic.line(to_int(pos_x[41]),to_int(pos_y[41]),to_int(pos_x[42]),to_int(pos_y[42]),pio^.attrib,white);  //lijn 17 - point17 to point18
Graphic.line(to_int(pos_x[42]),to_int(pos_y[42]),to_int(pos_x[43]),to_int(pos_y[43]),pio^.attrib,white);  //lijn 18 - point18 to point19
Graphic.line(to_int(pos_x[43]),to_int(pos_y[43]),to_int(pos_x[44]),to_int(pos_y[44]),pio^.attrib,white);  //lijn 19 - point19 to point20
Graphic.line(to_int(pos_x[44]),to_int(pos_y[44]),to_int(pos_x[45]),to_int(pos_y[45]),pio^.attrib,white);  //lijn 20 - point20 to point21
Graphic.line(to_int(pos_x[45]),to_int(pos_y[45]),to_int(pos_x[46]),to_int(pos_y[46]),pio^.attrib,white);  //lijn 21 - point21 to point22
Graphic.line(to_int(pos_x[46]),to_int(pos_y[46]),to_int(pos_x[47]),to_int(pos_y[47]),pio^.attrib,white);  //lijn 22 - point22 to point23
Graphic.line(to_int(pos_x[47]),to_int(pos_y[47]),to_int(pos_x[48]),to_int(pos_y[48]),pio^.attrib,white);  //lijn 23 - point23 to point24
Graphic.line(to_int(pos_x[48]),to_int(pos_y[48]),to_int(pos_x[37]),to_int(pos_y[37]),pio^.attrib,white);    //lijn 24 - point24 to point13
//W
//Hoeken sluiten
Graphic.line(to_int(pos_x[25]),to_int(pos_y[25]),to_int(pos_x[37]),to_int(pos_y[37]),pio^.attrib,white);    //lijn 25 - point1 to point13
Graphic.line(to_int(pos_x[26]),to_int(pos_y[26]),to_int(pos_x[38]),to_int(pos_y[38]),pio^.attrib,white);    //lijn 26 - point2 to point14
Graphic.line(to_int(pos_x[27]),to_int(pos_y[27]),to_int(pos_x[39]),to_int(pos_y[39]),pio^.attrib,white);    //lijn 27 - point3 to point15
Graphic.line(to_int(pos_x[28]),to_int(pos_y[28]),to_int(pos_x[40]),to_int(pos_y[40]),pio^.attrib,white);    //lijn 28 - point4 to point16
Graphic.line(to_int(pos_x[29]),to_int(pos_y[29]),to_int(pos_x[41]),to_int(pos_y[41]),pio^.attrib,white);    //lijn 29 - point5 to point17
Graphic.line(to_int(pos_x[30]),to_int(pos_y[30]),to_int(pos_x[42]),to_int(pos_y[42]),pio^.attrib,white);    //lijn 30 - point6 to point18
Graphic.line(to_int(pos_x[31]),to_int(pos_y[31]),to_int(pos_x[43]),to_int(pos_y[43]),pio^.attrib,white);    //lijn 31 - point7 to point19
Graphic.line(to_int(pos_x[32]),to_int(pos_y[32]),to_int(pos_x[44]),to_int(pos_y[44]),pio^.attrib,white);    //lijn 32 - point8 to point20
Graphic.line(to_int(pos_x[33]),to_int(pos_y[33]),to_int(pos_x[45]),to_int(pos_y[45]),pio^.attrib,white);    //lijn 33 - point9 to point21
Graphic.line(to_int(pos_x[34]),to_int(pos_y[34]),to_int(pos_x[46]),to_int(pos_y[46]),pio^.attrib,white);  //lijn 34 - point10 to point22
Graphic.line(to_int(pos_x[35]),to_int(pos_y[35]),to_int(pos_x[47]),to_int(pos_y[47]),pio^.attrib,white);  //lijn 35 - point11 to point23
Graphic.line(to_int(pos_x[36]),to_int(pos_y[36]),to_int(pos_x[48]),to_int(pos_y[48]),pio^.attrib,white);  //lijn 36 - point12 to point24
//W
//laag1
Graphic.line(to_int(pos_x[25]),to_int(pos_y[25]),to_int(pos_x[26]),to_int(pos_y[26]),pio^.attrib,white);      //lijn 1 - point1 to point2
Graphic.line(to_int(pos_x[26]),to_int(pos_y[26]),to_int(pos_x[27]),to_int(pos_y[27]),pio^.attrib,white);      //lijn 2 - point2 to point3
Graphic.line(to_int(pos_x[27]),to_int(pos_y[27]),to_int(pos_x[28]),to_int(pos_y[28]),pio^.attrib,white);      //lijn 3 - point3 to point4
Graphic.line(to_int(pos_x[28]),to_int(pos_y[28]),to_int(pos_x[29]),to_int(pos_y[29]),pio^.attrib,white);      //lijn 4 - point4 to point5
Graphic.line(to_int(pos_x[29]),to_int(pos_y[29]),to_int(pos_x[30]),to_int(pos_y[30]),pio^.attrib,white);      //lijn 5 - point5 to point6
Graphic.line(to_int(pos_x[30]),to_int(pos_y[30]),to_int(pos_x[31]),to_int(pos_y[31]),pio^.attrib,white);      //lijn 6 - point6 to point7
Graphic.line(to_int(pos_x[31]),to_int(pos_y[31]),to_int(pos_x[32]),to_int(pos_y[32]),pio^.attrib,white);      //lijn 7 - point7 to point8
Graphic.line(to_int(pos_x[32]),to_int(pos_y[32]),to_int(pos_x[33]),to_int(pos_y[33]),pio^.attrib,white);      //lijn 8 - point8 to point9
Graphic.line(to_int(pos_x[33]),to_int(pos_y[33]),to_int(pos_x[34]),to_int(pos_y[34]),pio^.attrib,white);    //lijn 9 - point9 to point10
Graphic.line(to_int(pos_x[34]),to_int(pos_y[34]),to_int(pos_x[35]),to_int(pos_y[35]),pio^.attrib,white);  //lijn 10 - point10 to point11
Graphic.line(to_int(pos_x[35]),to_int(pos_y[35]),to_int(pos_x[36]),to_int(pos_y[36]),pio^.attrib,white);  //lijn 11 - point11 to point12
Graphic.line(to_int(pos_x[36]),to_int(pos_y[36]),to_int(pos_x[25]),to_int(pos_y[25]),pio^.attrib,white);    //lijn 12 - point12 to point1

//E
//Laag2
Graphic.line(to_int(pos_x[61]),to_int(pos_y[61]),to_int(pos_x[62]),to_int(pos_y[62]),pio^.attrib,white);  //lijn 13 - point13 to point14
Graphic.line(to_int(pos_x[62]),to_int(pos_y[62]),to_int(pos_x[63]),to_int(pos_y[63]),pio^.attrib,white);  //lijn 14 - point14 to point15
Graphic.line(to_int(pos_x[63]),to_int(pos_y[63]),to_int(pos_x[64]),to_int(pos_y[64]),pio^.attrib,white);  //lijn 15 - point15 to point16
Graphic.line(to_int(pos_x[64]),to_int(pos_y[64]),to_int(pos_x[65]),to_int(pos_y[65]),pio^.attrib,white);  //lijn 16 - point16 to point17
Graphic.line(to_int(pos_x[65]),to_int(pos_y[65]),to_int(pos_x[66]),to_int(pos_y[66]),pio^.attrib,white);  //lijn 17 - point17 to point18
Graphic.line(to_int(pos_x[66]),to_int(pos_y[66]),to_int(pos_x[67]),to_int(pos_y[67]),pio^.attrib,white);  //lijn 18 - point18 to point19
Graphic.line(to_int(pos_x[67]),to_int(pos_y[67]),to_int(pos_x[68]),to_int(pos_y[68]),pio^.attrib,white);  //lijn 19 - point19 to point20
Graphic.line(to_int(pos_x[68]),to_int(pos_y[68]),to_int(pos_x[69]),to_int(pos_y[69]),pio^.attrib,white);  //lijn 20 - point20 to point21
Graphic.line(to_int(pos_x[69]),to_int(pos_y[69]),to_int(pos_x[70]),to_int(pos_y[70]),pio^.attrib,white);  //lijn 21 - point21 to point22
Graphic.line(to_int(pos_x[70]),to_int(pos_y[70]),to_int(pos_x[71]),to_int(pos_y[71]),pio^.attrib,white);  //lijn 22 - point22 to point23
Graphic.line(to_int(pos_x[71]),to_int(pos_y[71]),to_int(pos_x[72]),to_int(pos_y[72]),pio^.attrib,white);  //lijn 23 - point23 to point24
Graphic.line(to_int(pos_x[72]),to_int(pos_y[72]),to_int(pos_x[61]),to_int(pos_y[61]),pio^.attrib,white);    //lijn 24 - point24 to point13
//E
//Hoeken sluiten
Graphic.line(to_int(pos_x[49]),to_int(pos_y[49]),to_int(pos_x[61]),to_int(pos_y[61]),pio^.attrib,white);    //lijn 25 - point1 to point13
Graphic.line(to_int(pos_x[50]),to_int(pos_y[50]),to_int(pos_x[62]),to_int(pos_y[62]),pio^.attrib,white);    //lijn 26 - point2 to point14
Graphic.line(to_int(pos_x[51]),to_int(pos_y[51]),to_int(pos_x[63]),to_int(pos_y[63]),pio^.attrib,white);    //lijn 27 - point3 to point15
Graphic.line(to_int(pos_x[52]),to_int(pos_y[52]),to_int(pos_x[64]),to_int(pos_y[64]),pio^.attrib,white);    //lijn 28 - point4 to point16
Graphic.line(to_int(pos_x[53]),to_int(pos_y[53]),to_int(pos_x[65]),to_int(pos_y[65]),pio^.attrib,white);    //lijn 29 - point5 to point17
Graphic.line(to_int(pos_x[54]),to_int(pos_y[54]),to_int(pos_x[66]),to_int(pos_y[66]),pio^.attrib,white);    //lijn 30 - point6 to point18
Graphic.line(to_int(pos_x[55]),to_int(pos_y[55]),to_int(pos_x[67]),to_int(pos_y[67]),pio^.attrib,white);    //lijn 31 - point7 to point19
Graphic.line(to_int(pos_x[56]),to_int(pos_y[56]),to_int(pos_x[68]),to_int(pos_y[68]),pio^.attrib,white);    //lijn 32 - point8 to point20
Graphic.line(to_int(pos_x[57]),to_int(pos_y[57]),to_int(pos_x[69]),to_int(pos_y[69]),pio^.attrib,white);    //lijn 33 - point9 to point21
Graphic.line(to_int(pos_x[58]),to_int(pos_y[58]),to_int(pos_x[70]),to_int(pos_y[70]),pio^.attrib,white);  //lijn 34 - point10 to point22
Graphic.line(to_int(pos_x[59]),to_int(pos_y[59]),to_int(pos_x[71]),to_int(pos_y[71]),pio^.attrib,white);  //lijn 35 - point11 to point23
Graphic.line(to_int(pos_x[60]),to_int(pos_y[60]),to_int(pos_x[72]),to_int(pos_y[72]),pio^.attrib,white);  //lijn 36 - point12 to point24
//E
//laag1
Graphic.line(to_int(pos_x[49]),to_int(pos_y[49]),to_int(pos_x[50]),to_int(pos_y[50]),pio^.attrib,white);      //lijn 1 - point1 to point2
Graphic.line(to_int(pos_x[50]),to_int(pos_y[50]),to_int(pos_x[51]),to_int(pos_y[51]),pio^.attrib,white);      //lijn 2 - point2 to point3
Graphic.line(to_int(pos_x[51]),to_int(pos_y[51]),to_int(pos_x[52]),to_int(pos_y[52]),pio^.attrib,white);      //lijn 3 - point3 to point4
Graphic.line(to_int(pos_x[52]),to_int(pos_y[52]),to_int(pos_x[53]),to_int(pos_y[53]),pio^.attrib,white);      //lijn 4 - point4 to point5
Graphic.line(to_int(pos_x[53]),to_int(pos_y[53]),to_int(pos_x[54]),to_int(pos_y[54]),pio^.attrib,white);      //lijn 5 - point5 to point6
Graphic.line(to_int(pos_x[54]),to_int(pos_y[54]),to_int(pos_x[55]),to_int(pos_y[55]),pio^.attrib,white);      //lijn 6 - point6 to point7
Graphic.line(to_int(pos_x[55]),to_int(pos_y[55]),to_int(pos_x[56]),to_int(pos_y[56]),pio^.attrib,white);      //lijn 7 - point7 to point8
Graphic.line(to_int(pos_x[56]),to_int(pos_y[56]),to_int(pos_x[57]),to_int(pos_y[57]),pio^.attrib,white);      //lijn 8 - point8 to point9
Graphic.line(to_int(pos_x[57]),to_int(pos_y[57]),to_int(pos_x[58]),to_int(pos_y[58]),pio^.attrib,white);    //lijn 9 - point9 to point10
Graphic.line(to_int(pos_x[58]),to_int(pos_y[58]),to_int(pos_x[59]),to_int(pos_y[59]),pio^.attrib,white);  //lijn 10 - point10 to point11
Graphic.line(to_int(pos_x[59]),to_int(pos_y[59]),to_int(pos_x[60]),to_int(pos_y[60]),pio^.attrib,white);  //lijn 11 - point11 to point12
Graphic.line(to_int(pos_x[60]),to_int(pos_y[60]),to_int(pos_x[49]),to_int(pos_y[49]),pio^.attrib,white);    //lijn 12 - point12 to point1


//T
//Laag2
Graphic.line(to_int(pos_x[81]),to_int(pos_y[81]),to_int(pos_x[82]),to_int(pos_y[82]),pio^.attrib,white);  //lijn 13 - point13 to point14
Graphic.line(to_int(pos_x[82]),to_int(pos_y[82]),to_int(pos_x[83]),to_int(pos_y[83]),pio^.attrib,white);  //lijn 14 - point14 to point15
Graphic.line(to_int(pos_x[83]),to_int(pos_y[83]),to_int(pos_x[84]),to_int(pos_y[84]),pio^.attrib,white);  //lijn 15 - point15 to point16
Graphic.line(to_int(pos_x[84]),to_int(pos_y[84]),to_int(pos_x[85]),to_int(pos_y[85]),pio^.attrib,white);  //lijn 16 - point16 to point17
Graphic.line(to_int(pos_x[85]),to_int(pos_y[85]),to_int(pos_x[86]),to_int(pos_y[86]),pio^.attrib,white);  //lijn 17 - point17 to point18
Graphic.line(to_int(pos_x[86]),to_int(pos_y[86]),to_int(pos_x[87]),to_int(pos_y[87]),pio^.attrib,white);  //lijn 18 - point18 to point19
Graphic.line(to_int(pos_x[87]),to_int(pos_y[87]),to_int(pos_x[88]),to_int(pos_y[88]),pio^.attrib,white);  //lijn 19 - point19 to point20
Graphic.line(to_int(pos_x[88]),to_int(pos_y[88]),to_int(pos_x[81]),to_int(pos_y[81]),pio^.attrib,white);  //lijn 20 - point20 to point21
//T
//Hoeken sluiten
Graphic.line(to_int(pos_x[73]),to_int(pos_y[73]),to_int(pos_x[81]),to_int(pos_y[81]),pio^.attrib,white);    //lijn 25 - point1 to point13
Graphic.line(to_int(pos_x[74]),to_int(pos_y[74]),to_int(pos_x[82]),to_int(pos_y[82]),pio^.attrib,white);    //lijn 26 - point2 to point14
Graphic.line(to_int(pos_x[75]),to_int(pos_y[75]),to_int(pos_x[83]),to_int(pos_y[83]),pio^.attrib,white);    //lijn 27 - point3 to point15
Graphic.line(to_int(pos_x[76]),to_int(pos_y[76]),to_int(pos_x[84]),to_int(pos_y[84]),pio^.attrib,white);    //lijn 28 - point4 to point16
Graphic.line(to_int(pos_x[77]),to_int(pos_y[77]),to_int(pos_x[85]),to_int(pos_y[85]),pio^.attrib,white);    //lijn 29 - point5 to point17
Graphic.line(to_int(pos_x[78]),to_int(pos_y[78]),to_int(pos_x[86]),to_int(pos_y[86]),pio^.attrib,white);    //lijn 30 - point6 to point18
Graphic.line(to_int(pos_x[79]),to_int(pos_y[79]),to_int(pos_x[87]),to_int(pos_y[87]),pio^.attrib,white);    //lijn 31 - point7 to point19
Graphic.line(to_int(pos_x[80]),to_int(pos_y[80]),to_int(pos_x[88]),to_int(pos_y[88]),pio^.attrib,white);    //lijn 32 - point8 to point20
//T
//laag1
Graphic.line(to_int(pos_x[73]),to_int(pos_y[73]),to_int(pos_x[74]),to_int(pos_y[74]),pio^.attrib,white);      //lijn 1 - point1 to point2
Graphic.line(to_int(pos_x[74]),to_int(pos_y[74]),to_int(pos_x[75]),to_int(pos_y[75]),pio^.attrib,white);      //lijn 2 - point2 to point3
Graphic.line(to_int(pos_x[75]),to_int(pos_y[75]),to_int(pos_x[76]),to_int(pos_y[76]),pio^.attrib,white);      //lijn 3 - point3 to point4
Graphic.line(to_int(pos_x[76]),to_int(pos_y[76]),to_int(pos_x[77]),to_int(pos_y[77]),pio^.attrib,white);      //lijn 4 - point4 to point5
Graphic.line(to_int(pos_x[77]),to_int(pos_y[77]),to_int(pos_x[78]),to_int(pos_y[78]),pio^.attrib,white);      //lijn 5 - point5 to point6
Graphic.line(to_int(pos_x[78]),to_int(pos_y[78]),to_int(pos_x[79]),to_int(pos_y[79]),pio^.attrib,white);      //lijn 6 - point6 to point7
Graphic.line(to_int(pos_x[79]),to_int(pos_y[79]),to_int(pos_x[80]),to_int(pos_y[80]),pio^.attrib,white);      //lijn 7 - point7 to point8
Graphic.line(to_int(pos_x[80]),to_int(pos_y[80]),to_int(pos_x[73]),to_int(pos_y[73]),pio^.attrib,white);      //lijn 8 - point8 to point1


//S
//Laag2
Graphic.line(to_int(pos_x[101]),to_int(pos_y[101]),to_int(pos_x[102]),to_int(pos_y[102]),pio^.attrib,white);  //lijn 13 - point13 to point14
Graphic.line(to_int(pos_x[102]),to_int(pos_y[102]),to_int(pos_x[103]),to_int(pos_y[103]),pio^.attrib,white);  //lijn 14 - point14 to point15
Graphic.line(to_int(pos_x[103]),to_int(pos_y[103]),to_int(pos_x[104]),to_int(pos_y[104]),pio^.attrib,white);  //lijn 15 - point15 to point16
Graphic.line(to_int(pos_x[104]),to_int(pos_y[104]),to_int(pos_x[105]),to_int(pos_y[105]),pio^.attrib,white);  //lijn 16 - point16 to point17
Graphic.line(to_int(pos_x[105]),to_int(pos_y[105]),to_int(pos_x[106]),to_int(pos_y[106]),pio^.attrib,white);  //lijn 17 - point17 to point18
Graphic.line(to_int(pos_x[106]),to_int(pos_y[106]),to_int(pos_x[107]),to_int(pos_y[107]),pio^.attrib,white);  //lijn 18 - point18 to point19
Graphic.line(to_int(pos_x[107]),to_int(pos_y[107]),to_int(pos_x[108]),to_int(pos_y[108]),pio^.attrib,white);  //lijn 19 - point19 to point20
Graphic.line(to_int(pos_x[108]),to_int(pos_y[108]),to_int(pos_x[109]),to_int(pos_y[109]),pio^.attrib,white);  //lijn 20 - point20 to point21
Graphic.line(to_int(pos_x[109]),to_int(pos_y[109]),to_int(pos_x[110]),to_int(pos_y[110]),pio^.attrib,white);  //lijn 21 - point21 to point22
Graphic.line(to_int(pos_x[110]),to_int(pos_y[110]),to_int(pos_x[111]),to_int(pos_y[111]),pio^.attrib,white);  //lijn 22 - point22 to point23
Graphic.line(to_int(pos_x[111]),to_int(pos_y[111]),to_int(pos_x[112]),to_int(pos_y[112]),pio^.attrib,white);  //lijn 23 - point23 to point24
Graphic.line(to_int(pos_x[112]),to_int(pos_y[112]),to_int(pos_x[101]),to_int(pos_y[101]),pio^.attrib,white);    //lijn 24 - point24 to point13
//S
//Hoeken sluiten
Graphic.line(to_int(pos_x[89]),to_int(pos_y[89]),to_int(pos_x[101]),to_int(pos_y[101]),pio^.attrib,white);    //lijn 25 - point1 to point13
Graphic.line(to_int(pos_x[90]),to_int(pos_y[90]),to_int(pos_x[102]),to_int(pos_y[102]),pio^.attrib,white);    //lijn 26 - point2 to point14
Graphic.line(to_int(pos_x[91]),to_int(pos_y[91]),to_int(pos_x[103]),to_int(pos_y[103]),pio^.attrib,white);    //lijn 27 - point3 to point15
Graphic.line(to_int(pos_x[92]),to_int(pos_y[92]),to_int(pos_x[104]),to_int(pos_y[104]),pio^.attrib,white);    //lijn 28 - point4 to point16
Graphic.line(to_int(pos_x[93]),to_int(pos_y[93]),to_int(pos_x[105]),to_int(pos_y[105]),pio^.attrib,white);    //lijn 29 - point5 to point17
Graphic.line(to_int(pos_x[94]),to_int(pos_y[94]),to_int(pos_x[106]),to_int(pos_y[106]),pio^.attrib,white);    //lijn 30 - point6 to point18
Graphic.line(to_int(pos_x[95]),to_int(pos_y[95]),to_int(pos_x[107]),to_int(pos_y[107]),pio^.attrib,white);    //lijn 31 - point7 to point19
Graphic.line(to_int(pos_x[96]),to_int(pos_y[96]),to_int(pos_x[108]),to_int(pos_y[108]),pio^.attrib,white);    //lijn 32 - point8 to point20
Graphic.line(to_int(pos_x[97]),to_int(pos_y[97]),to_int(pos_x[109]),to_int(pos_y[109]),pio^.attrib,white);    //lijn 33 - point9 to point21
Graphic.line(to_int(pos_x[98]),to_int(pos_y[98]),to_int(pos_x[110]),to_int(pos_y[110]),pio^.attrib,white);  //lijn 34 - point10 to point22
Graphic.line(to_int(pos_x[99]),to_int(pos_y[99]),to_int(pos_x[111]),to_int(pos_y[111]),pio^.attrib,white);  //lijn 35 - point11 to point23
Graphic.line(to_int(pos_x[100]),to_int(pos_y[100]),to_int(pos_x[112]),to_int(pos_y[112]),pio^.attrib,white);  //lijn 36 - point12 to point24
//S
//laag1
Graphic.line(to_int(pos_x[89]),to_int(pos_y[89]),to_int(pos_x[90]),to_int(pos_y[90]),pio^.attrib,white);      //lijn 1 - point1 to point2
Graphic.line(to_int(pos_x[90]),to_int(pos_y[90]),to_int(pos_x[91]),to_int(pos_y[91]),pio^.attrib,white);      //lijn 2 - point2 to point3
Graphic.line(to_int(pos_x[91]),to_int(pos_y[91]),to_int(pos_x[92]),to_int(pos_y[92]),pio^.attrib,white);      //lijn 3 - point3 to point4
Graphic.line(to_int(pos_x[92]),to_int(pos_y[92]),to_int(pos_x[93]),to_int(pos_y[93]),pio^.attrib,white);      //lijn 4 - point4 to point5
Graphic.line(to_int(pos_x[93]),to_int(pos_y[93]),to_int(pos_x[94]),to_int(pos_y[94]),pio^.attrib,white);      //lijn 5 - point5 to point6
Graphic.line(to_int(pos_x[94]),to_int(pos_y[94]),to_int(pos_x[95]),to_int(pos_y[95]),pio^.attrib,white);      //lijn 6 - point6 to point7
Graphic.line(to_int(pos_x[95]),to_int(pos_y[95]),to_int(pos_x[96]),to_int(pos_y[96]),pio^.attrib,white);      //lijn 7 - point7 to point8
Graphic.line(to_int(pos_x[96]),to_int(pos_y[96]),to_int(pos_x[97]),to_int(pos_y[97]),pio^.attrib,white);      //lijn 8 - point8 to point9
Graphic.line(to_int(pos_x[97]),to_int(pos_y[97]),to_int(pos_x[98]),to_int(pos_y[98]),pio^.attrib,white);    //lijn 9 - point9 to point10
Graphic.line(to_int(pos_x[98]),to_int(pos_y[98]),to_int(pos_x[99]),to_int(pos_y[99]),pio^.attrib,white);  //lijn 10 - point10 to point11
Graphic.line(to_int(pos_x[99]),to_int(pos_y[99]),to_int(pos_x[100]),to_int(pos_y[100]),pio^.attrib,white);  //lijn 11 - point11 to point12
Graphic.line(to_int(pos_x[100]),to_int(pos_y[100]),to_int(pos_x[89]),to_int(pos_y[89]),pio^.attrib,white);    //lijn 12 - point12 to point1


pop_screen(#act);

copy_screen(#act, #pio^.space);

retcode:=_IDIDIT;




END_FUNCTION

FUNCTION Naam_3d::reset_naam
  x_offset :=100;
  y_offset :=200;

Sl_Xhoek:=0;
Sl_Yhoek:=0;
Sl_zhoek:=0;

//coordinaten x,y en z tijdens de firstscan in een array zetten of als op de resetknop gedrukt wordt
// alle punten van de eerte letter S

pos_X[1]:= 10+x_offset; pos_Y[1]:= 10+y_offset; pos_Z[1]:=10;       //start S point 1 laag 1
pos_X[2]:= 10+x_offset; pos_Y[2]:= 40+y_offset; pos_Z[2]:=10;       //point 2
pos_X[3]:= 30+x_offset; pos_Y[3]:= 40+y_offset; pos_Z[3]:=10;       //point 3
pos_X[4]:= 30+x_offset; pos_Y[4]:= 50+y_offset; pos_Z[4]:=10;       //point 4
pos_X[5]:= 10+x_offset; pos_Y[5]:= 50+y_offset; pos_Z[5]:=10;       //point 5
pos_X[6]:= 10+x_offset; pos_Y[6]:= 60+y_offset; pos_Z[6]:=10;       //point 6
pos_X[7]:= 40+x_offset; pos_Y[7]:= 60+y_offset; pos_Z[7]:=10;       //point 7
pos_X[8]:= 40+x_offset; pos_Y[8]:= 30+y_offset; pos_Z[8]:=10;       //point 8
pos_X[9]:= 20+x_offset; pos_Y[9]:= 30+y_offset; pos_Z[9]:=10;       //point 9
pos_X[10]:= 20+x_offset; pos_Y[10]:= 20+y_offset; pos_Z[10]:=10;    //point 10
pos_X[11]:= 40+x_offset; pos_Y[11]:= 20+y_offset; pos_Z[11]:=10;    //point 11
pos_X[12]:= 40+x_offset; pos_Y[12]:= 10+y_offset; pos_Z[12]:=10;    //point 12

pos_X[13]:= 10+x_offset; pos_Y[13]:= 10+y_offset; pos_Z[13]:=-10;    //start S point 1 laag 2
pos_X[14]:= 10+x_offset; pos_Y[14]:= 40+y_offset; pos_Z[14]:=-10;    //point 2
pos_X[15]:= 30+x_offset; pos_Y[15]:= 40+y_offset; pos_Z[15]:=-10;    //point 3
pos_X[16]:= 30+x_offset; pos_Y[16]:= 50+y_offset; pos_Z[16]:=-10;    //point 4
pos_X[17]:= 10+x_offset; pos_Y[17]:= 50+y_offset; pos_Z[17]:=-10;    //point 5
pos_X[18]:= 10+x_offset; pos_Y[18]:= 60+y_offset; pos_Z[18]:=-10;    //point 6
pos_X[19]:= 40+x_offset; pos_Y[19]:= 60+y_offset; pos_Z[19]:=-10;    //point 7
pos_X[20]:= 40+x_offset; pos_Y[20]:= 30+y_offset; pos_Z[20]:=-10;    //point 8
pos_X[21]:= 20+x_offset; pos_Y[21]:= 30+y_offset; pos_Z[21]:=-10;    //point 9
pos_X[22]:= 20+x_offset; pos_Y[22]:= 20+y_offset; pos_Z[22]:=-10;    //point 10
pos_X[23]:= 40+x_offset; pos_Y[23]:= 20+y_offset; pos_Z[23]:=-10;    //point 11
pos_X[24]:= 40+x_offset; pos_Y[24]:= 10+y_offset; pos_Z[24]:=-10;    //point 12

// alle punten van de letter W
pos_X[25]:= 50+x_offset; pos_Y[25]:= 10+y_offset; pos_Z[25]:=10;    //start W point 1 laag 1
pos_X[26]:= 50+x_offset; pos_Y[26]:= 60+y_offset; pos_Z[26]:=10;    //point 2
pos_X[27]:= 60+x_offset; pos_Y[27]:= 60+y_offset; pos_Z[27]:=10;    //point 3
pos_X[28]:= 70+x_offset; pos_Y[28]:= 50+y_offset; pos_Z[28]:=10;    //point 4
pos_X[29]:= 80+x_offset; pos_Y[29]:= 60+y_offset; pos_Z[29]:=10;    //point 5
pos_X[30]:= 90+x_offset; pos_Y[30]:= 60+y_offset; pos_Z[30]:=10;    //point 6
pos_X[31]:= 90+x_offset; pos_Y[31]:= 10+y_offset; pos_Z[31]:=10;    //point 7
pos_X[32]:= 80+x_offset; pos_Y[32]:= 10+y_offset; pos_Z[32]:=10;    //point 8
pos_X[33]:= 80+x_offset; pos_Y[33]:= 50+y_offset; pos_Z[33]:=10;    //point 9
pos_X[34]:= 70+x_offset; pos_Y[34]:= 40+y_offset; pos_Z[34]:=10;    //point 10
pos_X[35]:= 60+x_offset; pos_Y[35]:= 50+y_offset; pos_Z[35]:=10;    //point 11
pos_X[36]:= 60+x_offset; pos_Y[36]:= 10+y_offset; pos_Z[36]:=10;    //point 12

pos_X[37]:= 50+x_offset; pos_Y[37]:= 10+y_offset; pos_Z[37]:=-10;    //start W point 1 laag 2
pos_X[38]:= 50+x_offset; pos_Y[38]:= 60+y_offset; pos_Z[38]:=-10;    //point 2
pos_X[39]:= 60+x_offset; pos_Y[39]:= 60+y_offset; pos_Z[39]:=-10;    //point 3
pos_X[40]:= 70+x_offset; pos_Y[40]:= 50+y_offset; pos_Z[40]:=-10;    //point 4
pos_X[41]:= 80+x_offset; pos_Y[41]:= 60+y_offset; pos_Z[41]:=-10;    //point 5
pos_X[42]:= 90+x_offset; pos_Y[42]:= 60+y_offset; pos_Z[42]:=-10;    //point 6
pos_X[43]:= 90+x_offset; pos_Y[43]:= 10+y_offset; pos_Z[43]:=-10;    //point 7
pos_X[44]:= 80+x_offset; pos_Y[44]:= 10+y_offset; pos_Z[44]:=-10;    //point 8
pos_X[45]:= 80+x_offset; pos_Y[45]:= 50+y_offset; pos_Z[45]:=-10;    //point 9
pos_X[46]:= 70+x_offset; pos_Y[46]:= 40+y_offset; pos_Z[46]:=-10;    //point 10
pos_X[47]:= 60+x_offset; pos_Y[47]:= 50+y_offset; pos_Z[47]:=-10;    //point 11
pos_X[48]:= 60+x_offset; pos_Y[48]:= 10+y_offset; pos_Z[48]:=-10;    //point 12


// alle punten van de letter E
pos_X[49]:= 100+x_offset; pos_Y[49]:= 10+y_offset; pos_Z[49]:=10;    //start E point 1 laag 1
pos_X[50]:= 100+x_offset; pos_Y[50]:= 60+y_offset; pos_Z[50]:=10;    //point 2
pos_X[51]:= 130+x_offset; pos_Y[51]:= 60+y_offset; pos_Z[51]:=10;    //point 3
pos_X[52]:= 130+x_offset; pos_Y[52]:= 50+y_offset; pos_Z[52]:=10;    //point 4
pos_X[53]:= 110+x_offset; pos_Y[53]:= 50+y_offset; pos_Z[53]:=10;    //point 5
pos_X[54]:= 110+x_offset; pos_Y[54]:= 40+y_offset; pos_Z[54]:=10;    //point 6
pos_X[55]:= 120+x_offset; pos_Y[55]:= 40+y_offset; pos_Z[55]:=10;    //point 7
pos_X[56]:= 120+x_offset; pos_Y[56]:= 30+y_offset; pos_Z[56]:=10;    //point 8
pos_X[57]:= 110+x_offset; pos_Y[57]:= 30+y_offset; pos_Z[57]:=10;    //point 9
pos_X[58]:= 110+x_offset; pos_Y[58]:= 20+y_offset; pos_Z[58]:=10;    //point 10
pos_X[59]:= 130+x_offset; pos_Y[59]:= 20+y_offset; pos_Z[59]:=10;    //point 11
pos_X[60]:= 130+x_offset; pos_Y[60]:= 10+y_offset; pos_Z[60]:=10;    //point 12

pos_X[61]:= 100+x_offset; pos_Y[61]:= 10+y_offset; pos_Z[61]:=-10;    //start E point 1 laag 2
pos_X[62]:= 100+x_offset; pos_Y[62]:= 60+y_offset; pos_Z[62]:=-10;    //point 2
pos_X[63]:= 130+x_offset; pos_Y[63]:= 60+y_offset; pos_Z[63]:=-10;    //point 3
pos_X[64]:= 130+x_offset; pos_Y[64]:= 50+y_offset; pos_Z[64]:=-10;    //point 4
pos_X[65]:= 110+x_offset; pos_Y[65]:= 50+y_offset; pos_Z[65]:=-10;    //point 5
pos_X[66]:= 110+x_offset; pos_Y[66]:= 40+y_offset; pos_Z[66]:=-10;    //point 6
pos_X[67]:= 120+x_offset; pos_Y[67]:= 40+y_offset; pos_Z[67]:=-10;    //point 7
pos_X[68]:= 120+x_offset; pos_Y[68]:= 30+y_offset; pos_Z[68]:=-10;    //point 8
pos_X[69]:= 110+x_offset; pos_Y[69]:= 30+y_offset; pos_Z[69]:=-10;    //point 9
pos_X[70]:= 110+x_offset; pos_Y[70]:= 20+y_offset; pos_Z[70]:=-10;    //point 10
pos_X[71]:= 130+x_offset; pos_Y[71]:= 20+y_offset; pos_Z[71]:=-10;    //point 11
pos_X[72]:= 130+x_offset; pos_Y[72]:= 10+y_offset; pos_Z[72]:=-10;    //point 12


// alle punten van de letter T
pos_X[73]:= 140+x_offset; pos_Y[73]:= 10+y_offset; pos_Z[73]:=10;    //start T point 1 laag 1
pos_X[74]:= 140+x_offset; pos_Y[74]:= 20+y_offset; pos_Z[74]:=10;    //point 2
pos_X[75]:= 150+x_offset; pos_Y[75]:= 20+y_offset; pos_Z[75]:=10;    //point 3
pos_X[76]:= 150+x_offset; pos_Y[76]:= 60+y_offset; pos_Z[76]:=10;    //point 4
pos_X[77]:= 160+x_offset; pos_Y[77]:= 60+y_offset; pos_Z[77]:=10;    //point 5
pos_X[78]:= 160+x_offset; pos_Y[78]:= 20+y_offset; pos_Z[78]:=10;    //point 6
pos_X[79]:= 170+x_offset; pos_Y[79]:= 20+y_offset; pos_Z[79]:=10;    //point 7
pos_X[80]:= 170+x_offset; pos_Y[80]:= 10+y_offset; pos_Z[80]:=10;    //point 8

pos_X[81]:= 140+x_offset; pos_Y[81]:= 10+y_offset; pos_Z[81]:=-10;    //start T point 1 laag 2
pos_X[82]:= 140+x_offset; pos_Y[82]:= 20+y_offset; pos_Z[82]:=-10;    //point 2
pos_X[83]:= 150+x_offset; pos_Y[83]:= 20+y_offset; pos_Z[83]:=-10;    //point 3
pos_X[84]:= 150+x_offset; pos_Y[84]:= 60+y_offset; pos_Z[84]:=-10;    //point 4
pos_X[85]:= 160+x_offset; pos_Y[85]:= 60+y_offset; pos_Z[85]:=-10;    //point 5
pos_X[86]:= 160+x_offset; pos_Y[86]:= 20+y_offset; pos_Z[86]:=-10;    //point 6
pos_X[87]:= 170+x_offset; pos_Y[87]:= 20+y_offset; pos_Z[87]:=-10;    //point 7
pos_X[88]:= 170+x_offset; pos_Y[88]:= 10+y_offset; pos_Z[88]:=-10;    //point 8


// alle punten van de laatste letter S
pos_X[89]:= 180+x_offset; pos_Y[89]:= 10+y_offset; pos_Z[89]:=10;       //start S point 1 laag 1
pos_X[90]:= 180+x_offset; pos_Y[90]:= 40+y_offset; pos_Z[90]:=10;       //point 2
pos_X[91]:= 200+x_offset; pos_Y[91]:= 40+y_offset; pos_Z[91]:=10;       //point 3
pos_X[92]:= 200+x_offset; pos_Y[92]:= 50+y_offset; pos_Z[92]:=10;       //point 4
pos_X[93]:= 180+x_offset; pos_Y[93]:= 50+y_offset; pos_Z[93]:=10;       //point 5
pos_X[94]:= 180+x_offset; pos_Y[94]:= 60+y_offset; pos_Z[94]:=10;       //point 6
pos_X[95]:= 210+x_offset; pos_Y[95]:= 60+y_offset; pos_Z[95]:=10;       //point 7
pos_X[96]:= 210+x_offset; pos_Y[96]:= 30+y_offset; pos_Z[96]:=10;       //point 8
pos_X[97]:= 190+x_offset; pos_Y[97]:= 30+y_offset; pos_Z[97]:=10;       //point 9
pos_X[98]:= 190+x_offset; pos_Y[98]:= 20+y_offset; pos_Z[98]:=10;    //point 10
pos_X[99]:= 210+x_offset; pos_Y[99]:= 20+y_offset; pos_Z[99]:=10;    //point 11
pos_X[100]:= 210+x_offset; pos_Y[100]:= 10+y_offset; pos_Z[100]:=10;    //point 12

pos_X[101]:= 180+x_offset; pos_Y[101]:= 10+y_offset; pos_Z[101]:=-10;    //start S point 1 laag 2
pos_X[102]:= 180+x_offset; pos_Y[102]:= 40+y_offset; pos_Z[102]:=-10;    //point 2
pos_X[103]:= 200+x_offset; pos_Y[103]:= 40+y_offset; pos_Z[103]:=-10;    //point 3
pos_X[104]:= 200+x_offset; pos_Y[104]:= 50+y_offset; pos_Z[104]:=-10;    //point 4
pos_X[105]:= 180+x_offset; pos_Y[105]:= 50+y_offset; pos_Z[105]:=-10;    //point 5
pos_X[106]:= 180+x_offset; pos_Y[106]:= 60+y_offset; pos_Z[106]:=-10;    //point 6
pos_X[107]:= 210+x_offset; pos_Y[107]:= 60+y_offset; pos_Z[107]:=-10;    //point 7
pos_X[108]:= 210+x_offset; pos_Y[108]:= 30+y_offset; pos_Z[108]:=-10;    //point 8
pos_X[109]:= 190+x_offset; pos_Y[109]:= 30+y_offset; pos_Z[109]:=-10;    //point 9
pos_X[110]:= 190+x_offset; pos_Y[110]:= 20+y_offset; pos_Z[110]:=-10;    //point 10
pos_X[111]:= 210+x_offset; pos_Y[111]:= 20+y_offset; pos_Z[111]:=-10;    //point 11
pos_X[112]:= 210+x_offset; pos_Y[112]:= 10+y_offset; pos_Z[112]:=-10;    //point 12
END_FUNCTION

bovenaan, tijdens de _first_scan (bitje dat 1 cyclus hoog word, als de plc start) wordt het stukje reset_naam 1x uitgevoerd....
daar worden alle coördinaten ingevuld.

ik heb een stuk ruitjes papier genomen, SWETS er op getekend

en omdat ik swets een beetje in het midden van me scherm wilde , x+100, Y+200... maar daar heb ik variabelen van gemaakt, zodat ik ze later altijd kan veranderen, om het geheel heen en weer te kunnen schuiven...

dan van elke hoekpunt de x,y,z coördinaten in een grote array gestopt...

waarom een array? omdat je alle variabelen in array goed kan bereiken via tellers en for-next lussen...

Dus de data van alle hoekpunten zijn ingevuld...

dan in het gedeelte CyWork staat het rekenwerk.... en zoals je ziet, is dat niet zo heel moeilijk....

bovenaan
Xhoek:=to_real(Sl_Xhoek)/10000
Yhoek:=to_real(Sl_Yhoek)/10000
Zhoek:=to_real(Sl_Zhoek)/10000

zijn de waardes, van de 3 sliders op het beeld....
die geven de hoek waarmee het een punt verdraait moet worden

dan zie je de 3 stukjes welke de nieuwe punten uit rekenen bij het draaien om de x , y en z-as

die For Tel:=1 to 115 do
is dus de lus die het voor 115 punten , dus alle punten om me naam te tekenen , uit te rekenen...

het stukje :

Code: Selecteer alles

if reset_all<>0 then
reset_naam();
end_if;
is als je op het scherm op de reset knop drukt, dan worde alle coördinaten op nieuw in de array gezet, net als bij de first_scan, en begint alles dus weer vanuit de begin situatie..

En dan in de function Draw, word alles op het beeld getekend...
met die push_screen word het scherm uitgezet, zodat je het tekenen niet lijn voor lijn zie...

en dan worde alle lijnen getekend....
ik had alle punten in me tekening op ruitjes papier een nummer gegeven, zodat ik later makkelijk kon zien tussen welke punten er een lijn liep....

en zoals je ziet, bij het tekenen van de lijnen, wordt alleen maar de x en de y coördinaten gebruikt. De z coördinaten worden dus alleen gebruik voor het rekenen....

pop_screen en copy_screen, maakt het net getekende nieuwe scherm zichtbaar....

maar nu voor die doosjes, wordt het verhaal wat meer uitgebreid. hier in de naam swets, zitten de coördinaten vast in... bij de doosje, welke niet allemaal de zelfde maat hebben, moet dat dus ook variabelen worden.... en ook het aantal doosjes is variabel, en de hoek van de doosjes.... ook op de doosjes zit aan 1 kant een etiket, deze willen ze meestal aan de buitenkant hebben..., dus dat is ook een variabelen die ik mee moet nemen in het hele verhaal...
en ze moeten natuurlijk niet doorzichtig worden.... en daar heb ik Dabit voor nodig... :-)

maar ik ben eerst heel erg aan het nadenken hoe ik nu het beste de data kan bewaren, zodat het makkelijk, via tellers en lussen te bereiken is... en ook te volgen is ....
en geen data dubbel opsla...

dat is eigenlijk een beetje het verhaal van dit topic....

in het begin probeerde ik het dus nog door halve doosjes te tekenen, welke ik van achter naar voor, en van links naar rechts in het scherm plaatste... Dit ging op zicht niet verkeerd, alleen bij sommige doospatronen ging het niet goed....

eigenlijk had ik dat van te voren niet bedacht....

tis alleen jammer dat me baas het al gezien heeft... en die is zo enthousiast , dat ik het nu eigenlijk wel voor elkaar moet krijgen.... :-)
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

@ Dabit

ik heb nu een verhaal, met alle hoeken van de objecten, en ook van alle vlakken, welke (verlopig) even bestaan uit 4 hoekpunten.... ook heb ik van elk vlak de gemiddelde z waarde....

maar nu... hoe ga ik nu verder... bedoel, ik "kijk" nu recht tegen het verhaal aan... althans... ik heb alle punten gewoon recht om gezet naar x,y,z coördinaten....

dus wanneer en hoe roteren,verschalen?

ik denk dat dat voor het tekenen moet, en aan de hand van de hoekpunten?
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13536
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Arie Kabaalstra »

Ik denk dat het roteren/verschalen 't makkelijkste is als je alle coordinaten in 2D in je matrixje hebt.. dan trek je gewoon alle waarden door je rotatie/schaal matrixje heen toch?..

vraag me even niet om het te schrijven.. maar dat lijkt me in elk geval de makkelijkste oplossing..
Gebruikersavatar
DaBit
Donateur
Berichten: 11041
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Rekenhulp gevraagd...

Bericht door DaBit »

Hoe zien die arrays er nu uit waar je data in staat?
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

DaBit schreef:Hoe zien die arrays er nu uit waar je data in staat?

ja.. ik zit nu even op me werk...:-) maar ik heb eigenlijk een array met hoekpunten...

pallet - hoekpunten 8 - x,y,z

laag 8 - doos 50 - hoekpunten 8 - x,y,z

laag - sheet 10 - hoekpunten 8 - x,y,z


dus ik heb 1 array, daarin zitten de 8 hoekpunten van de pallet...
ik heb 1 array, met daar in voor 8 lagen, 50 doosjes , 8 hoekpunten, x,y,z
en 1 array voor de tussenlegvellen, dus 10 lagen, 8 hoekpunten, x,y,z


dan heb ik ook nog array om een doosjes je te tekenen, met daar dus in 8 vlakken, en per vlak (verlopig) even 4 variabelen, met welke hoekpunten samen een vlak vormen...
dan ook zo definitie voor een pallet... en voor een sheet...
Deze worden straks allen gebruikt bij het tekenen....

volgens mij heb ik zo geen dubbele data....
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

ik heb dat matrixen verhaal nog eens door gekeken.... maar weet nog niet helemaal wat ik er mee moet.... en hoe ik daar nu mee moet rekenen.... en waarom het makkelijker is? ben wel heel benieuwd..
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
DaBit
Donateur
Berichten: 11041
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Rekenhulp gevraagd...

Bericht door DaBit »

Hmm, tsja, hoe ga ik dat uitleggen? Het voordeel is dat je alle bewerkingen om van een object tot beeld kunt komen op kunt stapelen, wat ook voor de meest ingewikkelde scenes de hele boel versimpelt tot een paar geneste for-loops.

Even over nadenken hoe ik dat kwartje kan laten vallen... Dat hele navigeren in een 3D ruimte die uit getalletjes bestaat is best lastig.
Het beste werkt nog gewoon doen en een keer de mist in gaan, maar dan moet je wel enigzins weten hoe, anders lukt het nog niet.

Heb je die matrix-routines al gemaakt? Gebruik die anders eens om een enkel punt te transformeren. Gewoon 1,0,0, en dat 90 graden roteren om je Z-as, een keer een translatie erop doen, en een keer wat matrixen vermenigvuldigen om te kijken wat eruit komt. Een beetje spelen dus (en die code zul je toch moeten testen)
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

pfff.... ik weet ff niet waar en hoe ik beginnen moet....

http://nl.wikipedia.org/wiki/Matrixvermenigvuldiging

ik heb dit een paar keer door gelezen.... maar ik snap helemaal niet hoe ik het toe moet passen... al die gekke haken....

is er niet ergens een klein voorbeeld te vinden ... op het net ofzo....

toestand...
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

DaBit schreef:Heb je die matrix-routines al gemaakt? Gebruik die anders eens om een enkel punt te transformeren. Gewoon 1,0,0, en dat 90 graden roteren om je Z-as, een keer een translatie erop doen, en een keer wat matrixen vermenigvuldigen om te kijken wat eruit komt. Een beetje spelen dus (en die code zul je toch moeten testen)
heb geen idee hoe je zo matrix omzet naar basic?

?
misschien dom? maar ik zie dat verhaal met die haakjes.... en dat verhaal kan ik aardig volgen.... maar wat ik er verder mee moet?, en hoe ik het omzet in een basic verhaaltje?
kan iemand het misschien uitleggen in Jip en Janneke taal?
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
DaBit
Donateur
Berichten: 11041
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Rekenhulp gevraagd...

Bericht door DaBit »

Het kan efficienter dan dit, maar da's voor latere zorg. Even in C; ik heb de ballen verstand van basic :)

Matrixvermenigvuldiging:

Code: Selecteer alles

float MatrixC[4][4], MatrixA[4][4], MatrixB[4][4];

for (i=0,i<4,i++) 
  for (j=0,j<4,j++) 
  {
    sum=0; 
    for (x=0,x<4,x++) {
        sum+=MatrixA[i][x]*MatrixB[x][j]; 
    }
    C[i][j]=sum; 
  } 
}
Vector met matrix:

Code: Selecteer alles

float Origineel[4], Getransformeerd[4], Matrix[4][4];

// Vectoren/punten hebben 4 elementen ipv 3: [X Y Z 1]
Origineel[3] = 1.0f;
for ( i = 0; i < 4; ++i ) {
       Getransformeerd[i] = Origineel[0] * Matrix[0][i] + Origineel[1] * Matrix[1][i] + Origineel[2] + Matrix[2][i] + Origineel[3] * Matrix[3][i];
}
Getransformeerd[0] = Getransformeerd[0]/Getransformeerd[3];
Getransformeerd[1] = Getransformeerd[1]/Getransformeerd[3];
Getransformeerd[2] = Getransformeerd[2]/Getransformeerd[3];
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

ik begin maar bij het bovenste voorbeeldje...

die MatrixC[4] [4] , matrixA[4][4] en MatrixB[4][4] zijn multidimensional arrays? met daarin float (= real) getallen?

en wat voor getallen moeten er in die (als het array zijn) staan om te kunnen testen of dat goed gaat?

laten we daar maar eens mee beginnen......
Laatst gewijzigd door Swets op 30 jan 2015 16:26, 1 keer totaal gewijzigd.
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Rekenhulp gevraagd...

Bericht door Swets »

ik heb even een test dingetje gemaakt:

Code: Selecteer alles

  VAR
    i     : DINT;
    j     : DINT;
    x     : DINT;
  END_VAR
 
  for i:=0 to 4 do
    for j:=0 to 4 do
      sum:=0;
      for x:=0 to 4 do 
        sum+=MatrixA[i][x]*MatrixB[x][j];
      end_for;
      MatrixC[i][j]:=sum;
    end_for;     
  end_for;
ik heb in matrixA
matrixA[0] - en dan van [0] t/m [4] het getal 1 gezet
matrixA[1] -[0] t/m [4] het getal 2 gezet
matrixA[2] 5x een 3
matrixA[3] 5x een 4
matrixA[4] 5x een 5

MatrixB is het zelfde...

en dan krijg ik terug in MatrixC (want ik neem aan dat in jouw voorbeeld C[j] , MatrixC[j] moet zijn?) :

matrixC[0] -> [0] t/m [4] staat 15
matrixC[1] -> [0] t/m [4] staat 30
matrixC[2] -> [0] t/m [4] staat 45
matrixC[3] -> [0] t/m [4] staat 60
matrixC[4] -> [0] t/m [4] staat 75

leuk? is dit goed?

edit: ik denk dat de arrays maar van 0..3 moeten lopen? en de lussen bij mij ook van 0 tot en met 3, ik denk dat jouw lussen doorlopen worden zolang ze kleiner zijn dan 4... dus van 0 tot en met 3 ?
en de matrix moet ook 0..3 zijn ?
Laatst gewijzigd door Swets op 30 jan 2015 16:46, 1 keer totaal gewijzigd.
http://www.arjan-swets.com (met cnc filmpjes)
Plaats reactie