I'm looking at two different computer graphics approaches. One of them uses a cylindrical 'virtual screen', the other uses a flat virtual screen. The problem is that while the first method, the cylindrical method, should be displayed on a cylindrical surface to look right, it is in fact mapped onto the flat computer screen. This entails some distortion. I'm trying to model this distortion.
I've drawn a diagram. It's not as confusing as I've made it sound.
P is the projection centre. A B C are objects in the real world. The dotted lines are the light rays cast from A B C to the two projection surface: cylinder, and tangent
For point A, there's no difference between the two projections.
For point B, you can see that the ray P B intersects the two surfaces at two different places. On the cylinder, the arc is marked C. On the plane, the distance down the tangent is marked T.
I can work out both. The value of C is:
2*Pi*r * (angle / 360)
Let's say the radius is 10.
The value of T is:
radius * Tan (angle)
As the angle increases, so does the difference between C and T. This describes the distortion you'd expect when plotting the cylindrically derived coordinates onto the flat plane. It's clear that for small angles the distortion is very small, but that it gets exponentially bigger as the angle increases up to 90 degrees.
I used excel to work out some values:
angle difference
1 3.72206E-05
2 0.000297873
3 0.001005936
4 0.002386479
5 0.004666219
6 0.008074083
7 0.012841779
8 0.019204385
9 0.027400961
10 0.037675166
11 0.05027592
12 0.06545808
13 0.083483156
14 0.104620059
15 0.129145897
16 0.157346814
17 0.189518881
18 0.225969048
19 0.267016164
20 0.312992061
21 0.364242734
22 0.421129598
23 0.484030853
24 0.553342961
25 0.629482248
26 0.712886644
27 0.804017581
28 0.903362063
29 1.011434936
30 1.128781365
31 1.255979569
32 1.393643817
33 1.542427741
34 1.703027994
35 1.8761883
36 2.062703943
37 2.263426764
38 2.479270726
39 2.711218123
40 2.960326538
41 3.227736634
42 3.514680928
43 3.822493663
44 4.152621983
45 4.506638569
46 4.886256015
47 5.293343193
48 5.729943951
49 6.198298549
50 6.700868299
51 7.240363998
52 7.819778844
53 8.442426679
54 9.111986612
55 9.832555281
56 10.60870834
57 11.44557309
58 12.34891482
59 13.3252397
60 14.38191838
61 15.52733514
62 16.77106891
63 18.12411461
64 19.59915553
65 21.21090104
66 22.97650882
67 24.91611711
68 27.0535222
69 29.4170495
70 32.0406858
71 34.96556928
72 38.24197599
73 41.93200756
74 46.11328674
75 50.88413124
76 56.37094474
77 62.73901936
78 70.20873915
79 79.08062204
80 89.77538678
81 102.9007312
82 119.3681945
83 140.6101861
84 169.0140455
85 208.8769712
86 268.7933451
87 368.816705
88 569.1076344
89 1170.468991
90 3.42816E+17
I don't know why it's given a value for angle = 90 because no ray can exist for such a scenario.
Now - this is rather a long winded way to produce a function between angle and difference. Is there a tidier trigonometrical function to get what I want without needing a big long excel formua to subtract a side of a triangle from the arc of a circle. It just feels a bit long winded. Perhaps it will be obvious that what I want can be calculated much more simply. Thanks


LinkBack URL
About LinkBacks



