
*******************************************************************************
**Rotate Points
*******************************************************************************
RotatePoints:
	lea	Points(pc),a5
	lea	Rotated(pc),a6
	lea	SinusTabel(pc),a0
	lea	CosinusTabel(pc),a1

	move.w	ZAngle(pc),d4
	add.w	d4,d4
	move.w	(a0,d4.w),d0
	swap	d0
	move.w	(a1,d4.w),d0
	move.l	d0,a2

	move.w	XAngle(pc),d4
	add.w	d4,d4
	move.w	(a0,d4.w),d0
	swap	d0
	move.w	(a1,d4.w),d0
	move.l	d0,a3

	move.w	YAngle(pc),d4
	add.w	d4,d4
	move.w	(a0,d4.w),d0
	swap	d0
	move.w	(a1,d4.w),d0
	move.l	d0,a4

.nextpoint:	move.w	(a5)+,d5
	cmp.w	#$8000,d5
	beq.w	.ud
	move.w	(a5)+,d6
	move.w	(a5)+,d7

**Rotation om z-aksen
	move.l	a2,d0
	move.w	d0,d1	;cos
	swap	d0	;sin
	move.w	d0,d2
	add.w	d1,d2	;sin+cos
	muls	d6,d0	;y*sin
	muls	d5,d1	;x*cos
	add.w	d5,d6	;x+y
	move.l	d1,d5
	sub.l	d0,d5
	swap	d5
	add.w	d5,d5
	add.w	d5,d5	;x*cos-y*sin
	muls	d2,d6	;(x+y)*(sin+cos)=x*sin+y*cos+x*cos+y*sin
	sub.l	d0,d6	;x*sin+y*cos+x*cos
	sub.l	d1,d6	;x*sin+y*cos
	swap	d6
	add.w	d6,d6
	add.w	d6,d6

**Rotation om x-aksen
	move.l	a3,d0
	move.w	d0,d1	;cos
	swap	d0	;sin
	move.w	d0,d2
	add.w	d1,d2	;sin+cos
	muls	d6,d0	;y*sin
	muls	d7,d1	;z*cos
	add.w	d7,d6	;z+y
	move.l	d1,d7
	sub.l	d0,d7
	swap	d7
	add.w	d7,d7
	add.w	d7,d7	;z*cos-y*sin
	muls	d2,d6	;(z+y)*(sin+cos)=z*sin+y*cos+z*cos+y*sin
	sub.l	d0,d6	;z*sin+y*cos+z*cos
	sub.l	d1,d6	;z*sin+y*cos
	swap	d6
	add.w	d6,d6
	add.w	d6,d6

**Rotation om y-aksen
	move.l	a4,d0
	move.w	d0,d1	;cos
	swap	d0	;sin
	move.w	d0,d2
	add.w	d1,d2	;sin+cos
	muls	d5,d0	;x*sin
	muls	d7,d1	;z*cos
	add.w	d7,d5	;z+x
	move.l	d1,d7
	sub.l	d0,d7
	swap	d7
	add.w	d7,d7
	add.w	d7,d7	;z*cos-x*sin
	muls	d2,d5	;(z+x)*(sin+cos)=z*sin+x*cos+z*cos+x*sin
	sub.l	d0,d5	;z*sin+x*cos+z*cos
	sub.l	d1,d5	;z*sin+x*cos
	swap	d5
	add.w	d5,d5
	add.w	d5,d5

**3d -> 2d
	add.w	XCenter(pc),d5
	add.w	YCenter(pc),d6
	add.w	ZCenter(pc),d7
	moveq	#9,d4
	ext.l	d5
	ext.l	d6
	asl.l	d4,d5
	asl.l	d4,d6
	divs	d7,d5
	divs	d7,d6

	add.w	#Width/2,d5
	add.w	#Height/2,d6

	movem.w	d5-d6,(a6)
	addq.w	#4,a6
	bra.w	.nextpoint

.ud:	rts


fak=15

Points:	dc.w	-115*fak,-39*fak,-12*fak	;0
	dc.w	115*fak,-39*fak,-12*fak	;1
	dc.w	115*fak,39*fak,-12*fak	;2
	dc.w	-115*fak,39*fak,-12*fak	;3
	dc.w	-115*fak,-39*fak,12*fak	;4
	dc.w	115*fak,-39*fak,12*fak	;5
	dc.w	115*fak,39*fak,12*fak	;6
	dc.w	-115*fak,39*fak,12*fak	;7
	dc.w	0,-39*fak,-12*fak		;8
	dc.w	0,39*fak,-12*fak		;9
	dc.w	0,39*fak,12*fak		;10
	dc.w	0,-39*fak,12*fak		;11
	...
	dc.w	$8000

Rotated:	blk.l	73,0

Faces:	dc.w	1,4,3,0,8,9
	dc.w	1,4,4,7,10,11
	dc.w	2,4,7,3,9,10
	dc.w	2,4,0,4,11,8
	dc.w	4,4,0,3,7,4
	dc.w	3,4,1,2,9,8
	dc.w	3,4,6,5,11,10
	dc.w	5,4,2,6,10,9
	dc.w	5,4,5,1,8,11
	dc.w	4,4,2,1,5,6

	dc.w	$8000

Faces2:	dc.w	2,14,21,22,23,24,25,12,13,14,15,16,17,18,19,20
	dc.w	2,14,26,27,28,29,30,31,32,33,34,35,36,37,38,39
	dc.w	2,8,40,41,42,43,44,45,46,47

	dc.w	2,8,48,49,50,51,52,53,54,55
	dc.w	2,4,56,57,58,59
	dc.w	2,13,60,61,62,63,64,65,66,67,68,69,70,71,72

	dc.w	$8000

*******************************************************************************
**Tabeller
*******************************************************************************
SinusTabel:
;Option n  = 1
;Min. y-val = -3.27680E+04
;Max. y-val =  3.27670E+04
;Startvalue = min
;Length     = 1024
	dc.w	-1,201,402,603,804,1005,1206,1406,1607,1808,2009,2209,2410,2610,2811,3011
	dc.w	3211,3411,3611,3811,4011,4210,4409,4609,4807,5006,5205,5403,5601,5799,5997,6195
	dc.w	6392,6589,6786,6983,7179,7375,7571,7766,7961,8156,8351,8545,8739,8933,9126,9319
	dc.w	9511,9704,9895,10087,10278,10469,10659,10849,11039,11228,11416,11605,11792,11980,12167,12353
	dc.w	12539,12725,12910,13094,13278,13462,13645,13827,14009,14191,14372,14552,14732,14911,15090,15268
	dc.w	15446,15623,15799,15975,16151,16325,16499,16673,16845,17017,17189,17360,17530,17700,17868,18037
	dc.w	18204,18371,18537,18703,18867,19031,19195,19357,19519,19680,19841,20000,20159,20317,20475,20631
	dc.w	20787,20942,21096,21250,21402,21554,21705,21855,22005,22153,22301,22448,22594,22739,22884,23027
	dc.w	23170,23311,23452,23592,23731,23869,24007,24143,24279,24413,24547,24680,24811,24942,25072,25201
	dc.w	25329,25456,25582,25707,25832,25955,26077,26198,26319,26438,26556,26673,26790,26905,27019,27132
	dc.w	27245,27356,27466,27575,27683,27790,27896,28001,28105,28208,28310,28410,28510,28609,28706,28803
	dc.w	28898,28992,29085,29177,29268,29358,29447,29534,29621,29706,29791,29874,29956,30037,30117,30195
	dc.w	30273,30349,30424,30498,30571,30643,30714,30783,30852,30919,30985,31050,31113,31176,31237,31297
	dc.w	31356,31414,31470,31526,31580,31633,31685,31736,31785,31833,31880,31926,31971,32014,32057,32098
	dc.w	32137,32176,32213,32250,32285,32318,32351,32382,32412,32441,32469,32495,32521,32545,32567,32589
	dc.w	32609,32628,32646,32663,32678,32692,32705,32717,32728,32737,32745,32752,32757,32761,32765,32766

CosinusTabel:
;Option n  = 1
;Min. y-val = -3.27680E+04
;Max. y-val =  3.27670E+04
;Startvalue = max
;Length     = 1024
	dc.w	32767,32766,32765,32761,32757,32752,32745,32737,32728,32717,32705,32692,32678,32663,32646,32628
	dc.w	32609,32589,32567,32545,32521,32495,32469,32441,32412,32382,32351,32318,32285,32250,32213,32176
	dc.w	32137,32098,32057,32014,31971,31926,31880,31833,31785,31736,31685,31633,31580,31526,31470,31414
	dc.w	31356,31297,31237,31176,31113,31050,30985,30919,30852,30783,30714,30643,30571,30498,30424,30349
	dc.w	30273,30195,30117,30037,29956,29874,29791,29706,29621,29534,29447,29358,29268,29177,29085,28992
	dc.w	28898,28803,28706,28609,28510,28410,28310,28208,28105,28001,27896,27790,27683,27575,27466,27356
	dc.w	27245,27132,27019,26905,26790,26673,26556,26438,26319,26198,26077,25955,25832,25707,25582,25456
	dc.w	25329,25201,25072,24942,24811,24680,24547,24413,24279,24143,24007,23869,23731,23592,23452,23311
	dc.w	23170,23027,22884,22739,22594,22448,22301,22153,22005,21855,21705,21554,21402,21250,21096,20942
	dc.w	20787,20631,20475,20317,20159,20000,19841,19680,19519,19357,19195,19031,18867,18703,18537,18371
	dc.w	18204,18037,17868,17700,17530,17360,17189,17017,16845,16673,16499,16325,16151,15975,15799,15623
	dc.w	15446,15268,15090,14911,14732,14552,14372,14191,14009,13827,13645,13462,13278,13094,12910,12725
	dc.w	12539,12353,12167,11980,11792,11605,11416,11228,11039,10849,10659,10469,10278,10087,9895,9704
	dc.w	9511,9319,9126,8933,8739,8545,8351,8156,7961,7766,7571,7375,7179,6983,6786,6589
	dc.w	6392,6195,5997,5799,5601,5403,5205,5006,4807,4609,4409,4210,4011,3811,3611,3411
	dc.w	3211,3011,2811,2610,2410,2209,2009,1808,1607,1406,1206,1005,804,603,402,201
	dc.w	-1,-202,-403,-604,-805,-1006,-1207,-1407,-1608,-1809,-2010,-2210,-2411,-2611,-2812,-3012
	dc.w	-3212,-3412,-3612,-3812,-4012,-4211,-4410,-4610,-4808,-5007,-5206,-5404,-5602,-5800,-5998,-6196
	dc.w	-6393,-6590,-6787,-6984,-7180,-7376,-7572,-7767,-7962,-8157,-8352,-8546,-8740,-8934,-9127,-9320
	dc.w	-9512,-9705,-9896,-10088,-10279,-10470,-10660,-10850,-11040,-11229,-11417,-11606,-11793,-11981,-12168,-12354
	dc.w	-12540,-12726,-12911,-13095,-13279,-13463,-13646,-13828,-14010,-14192,-14373,-14553,-14733,-14912,-15091,-15269
	dc.w	-15447,-15624,-15800,-15976,-16152,-16326,-16500,-16674,-16846,-17018,-17190,-17361,-17531,-17701,-17869,-18038
	dc.w	-18205,-18372,-18538,-18704,-18868,-19032,-19196,-19358,-19520,-19681,-19842,-20001,-20160,-20318,-20476,-20632
	dc.w	-20788,-20943,-21097,-21251,-21403,-21555,-21706,-21856,-22006,-22154,-22302,-22449,-22595,-22740,-22885,-23028
	dc.w	-23171,-23312,-23453,-23593,-23732,-23870,-24008,-24144,-24280,-24414,-24548,-24681,-24812,-24943,-25073,-25202
	dc.w	-25330,-25457,-25583,-25708,-25833,-25956,-26078,-26199,-26320,-26439,-26557,-26674,-26791,-26906,-27020,-27133
	dc.w	-27246,-27357,-27467,-27576,-27684,-27791,-27897,-28002,-28106,-28209,-28311,-28411,-28511,-28610,-28707,-28804
	dc.w	-28899,-28993,-29086,-29178,-29269,-29359,-29448,-29535,-29622,-29707,-29792,-29875,-29957,-30038,-30118,-30196
	dc.w	-30274,-30350,-30425,-30499,-30572,-30644,-30715,-30784,-30853,-30920,-30986,-31051,-31114,-31177,-31238,-31298
	dc.w	-31357,-31415,-31471,-31527,-31581,-31634,-31686,-31737,-31786,-31834,-31881,-31927,-31972,-32015,-32058,-32099
	dc.w	-32138,-32177,-32214,-32251,-32286,-32319,-32352,-32383,-32413,-32442,-32470,-32496,-32522,-32546,-32568,-32590
	dc.w	-32610,-32629,-32647,-32664,-32679,-32693,-32706,-32718,-32729,-32738,-32746,-32753,-32758,-32762,-32766,-32767
	dc.w	-32768,-32767,-32766,-32762,-32758,-32753,-32746,-32738,-32729,-32718,-32706,-32693,-32679,-32664,-32647,-32629
	dc.w	-32610,-32590,-32568,-32546,-32522,-32496,-32470,-32442,-32413,-32383,-32352,-32319,-32286,-32251,-32214,-32177
	dc.w	-32138,-32099,-32058,-32015,-31972,-31927,-31881,-31834,-31786,-31737,-31686,-31634,-31581,-31527,-31471,-31415
	dc.w	-31357,-31298,-31238,-31177,-31114,-31051,-30986,-30920,-30853,-30784,-30715,-30644,-30572,-30499,-30425,-30350
	dc.w	-30274,-30196,-30118,-30038,-29957,-29875,-29792,-29707,-29622,-29535,-29448,-29359,-29269,-29178,-29086,-28993
	dc.w	-28899,-28804,-28707,-28610,-28511,-28411,-28311,-28209,-28106,-28002,-27897,-27791,-27684,-27576,-27467,-27357
	dc.w	-27246,-27133,-27020,-26906,-26791,-26674,-26557,-26439,-26320,-26199,-26078,-25956,-25833,-25708,-25583,-25457
	dc.w	-25330,-25202,-25073,-24943,-24812,-24681,-24548,-24414,-24280,-24144,-24008,-23870,-23732,-23593,-23453,-23312
	dc.w	-23171,-23028,-22885,-22740,-22595,-22449,-22302,-22154,-22006,-21856,-21706,-21555,-21403,-21251,-21097,-20943
	dc.w	-20788,-20632,-20476,-20318,-20160,-20001,-19842,-19681,-19520,-19358,-19196,-19032,-18868,-18704,-18538,-18372
	dc.w	-18205,-18038,-17869,-17701,-17531,-17361,-17190,-17018,-16846,-16674,-16500,-16326,-16152,-15976,-15800,-15624
	dc.w	-15447,-15269,-15091,-14912,-14733,-14553,-14373,-14192,-14010,-13828,-13646,-13463,-13279,-13095,-12911,-12726
	dc.w	-12540,-12354,-12168,-11981,-11793,-11606,-11417,-11229,-11040,-10850,-10660,-10470,-10279,-10088,-9896,-9705
	dc.w	-9512,-9320,-9127,-8934,-8740,-8546,-8352,-8157,-7962,-7767,-7572,-7376,-7180,-6984,-6787,-6590
	dc.w	-6393,-6196,-5998,-5800,-5603,-5404,-5206,-5007,-4809,-4610,-4410,-4211,-4012,-3812,-3612,-3412
	dc.w	-3212,-3012,-2812,-2612,-2411,-2210,-2010,-1809,-1608,-1407,-1207,-1006,-805,-604,-403,-202
	dc.w	-1,201,402,603,804,1005,1206,1406,1607,1808,2009,2209,2410,2610,2811,3011
	dc.w	3211,3411,3611,3811,4011,4210,4409,4609,4807,5006,5205,5403,5601,5799,5997,6195
	dc.w	6392,6589,6786,6983,7179,7375,7571,7766,7961,8156,8351,8545,8739,8933,9126,9319
	dc.w	9511,9704,9895,10087,10278,10469,10659,10849,11039,11228,11416,11605,11792,11980,12167,12353
	dc.w	12539,12725,12910,13094,13278,13462,13645,13827,14009,14191,14372,14552,14732,14911,15090,15268
	dc.w	15446,15623,15799,15975,16151,16325,16499,16673,16845,17017,17189,17360,17530,17700,17868,18037
	dc.w	18204,18371,18537,18703,18867,19031,19195,19357,19519,19680,19841,20000,20159,20317,20475,20631
	dc.w	20787,20942,21096,21250,21402,21554,21705,21855,22005,22153,22301,22448,22594,22739,22884,23027
	dc.w	23170,23311,23452,23592,23731,23869,24007,24143,24279,24413,24547,24680,24811,24942,25072,25201
	dc.w	25329,25456,25582,25707,25832,25955,26077,26198,26319,26438,26556,26673,26790,26905,27019,27132
	dc.w	27245,27356,27466,27575,27683,27790,27896,28001,28105,28208,28310,28410,28510,28609,28706,28803
	dc.w	28898,28992,29085,29177,29268,29358,29447,29534,29621,29706,29791,29874,29956,30037,30117,30195
	dc.w	30273,30349,30424,30498,30571,30643,30714,30783,30852,30919,30985,31050,31113,31176,31237,31297
	dc.w	31356,31414,31470,31526,31580,31633,31685,31736,31785,31833,31880,31926,31971,32014,32057,32098
	dc.w	32137,32176,32213,32250,32285,32318,32351,32382,32412,32441,32469,32495,32521,32545,32567,32589
	dc.w	32609,32628,32646,32663,32678,32692,32705,32717,32728,32737,32745,32752,32757,32761,32765,32766

