Computer Science Canada

3d questions

Author:  Homer_simpson [ Wed May 28, 2003 9:41 pm ]
Post subject:  3d questions

1. How do i caculate the distance between 2 dots in third dimention(3D)
2. what website could i use as my source for math and physic formulas...

Author:  Catalyst [ Wed May 28, 2003 9:45 pm ]
Post subject: 

1) d=sqrt ( (x2-x1)**2+(y2-y1)**2+(z2-z1)**2)

2) [url] http://hem.passagen.se/olle2/programmering.htm[/url]

some of the articles will scare the shit out of you Wink

Author:  Homer_simpson [ Wed May 28, 2003 9:50 pm ]
Post subject: 

thx for the formula
i already know that site... but it doesn't have anything about physics it's all bout 3d shit... but it's cool and yeah some articles are really complicated =/

Author:  Homer_simpson [ Thu May 29, 2003 4:48 pm ]
Post subject: 

another question...
is sorting the polygons by their Z in order to be drawn the only way to do proper overlapping?!

Author:  Catalyst [ Thu May 29, 2003 4:55 pm ]
Post subject: 

it is one method
there are a number of others

bsp and octrees are another method
but they are static can't be moved

z-buffering is the best solution but is FAR too
time consuming for turing


z-sorting with culling is the best solution (for Turing)

note: theres a good quick sort algorithm in turinglib (posted somewhere)

Author:  Homer_simpson [ Thu May 29, 2003 4:56 pm ]
Post subject: 

k i'll search for that but can u explain the other methods a little more or gimme some source where i can learn about them...

Author:  Tony [ Thu May 29, 2003 4:57 pm ]
Post subject: 

no, I dont think it would be proper... You will defenatly run in trouble if two of your polygons are intersecting each other Laughing

though I dont think that should be the issue with turing's 3D models... they are not that complex Very Happy

But since I'm no expert on 3D, I cant really say much Confused

Author:  Catalyst [ Thu May 29, 2003 5:03 pm ]
Post subject: 

your right tony z-sorting fails when theres intersecting polys (and on cyclic overlap) but its the only method that ive tried that efficient enough to work with turing


on BSP trees
http://www.geocities.com/SiliconValley/2151/graphics.html


hidden surface removal in general
http://www.tdb.uu.se/~grafik/ht02/lectures/hsr.pdf

Author:  Homer_simpson [ Thu May 29, 2003 8:29 pm ]
Post subject: 

how would it crash?! if the Zs are the same i'll just make it be right after eachother...

Author:  Catalyst [ Thu May 29, 2003 8:31 pm ]
Post subject: 

never said that it would crash, it just wouldnt work correctly

Author:  Homer_simpson [ Thu May 29, 2003 8:34 pm ]
Post subject: 

Catalyst wrote:

Now that's what i'm talking about =Þ Razz
no really.. their great sites thanx catalyst

Author:  Catalyst [ Thu May 29, 2003 8:42 pm ]
Post subject: 

oh to pretty much any question relating to the math part of 3d
the answer can be found here (just discovered this yesterday)

http://www.faqs.org/faqs/graphics/algorithms-faq

Author:  Homer_simpson [ Thu May 29, 2003 8:44 pm ]
Post subject: 

wow thanx catalyst u've helping me stuff and all... here have some bits =Þ
+50 bits to catalyst

Author:  Homer_simpson [ Thu May 29, 2003 9:37 pm ]
Post subject: 

if yer interested this is the procedure i'm gonna use to sort Z # out and it works without crashing
code:
procedure sort (var a : array 1 .. * of int)
    var N : int := upper (a);
    var tt := 0
    var minIndex : int
    for i : 1 .. (N - 1);
        minIndex := i;
        for j : i .. N

            if (a (j) < a (minIndex)) then
                minIndex := j;
            end if
        end for
        if (minIndex > i) then

            tt := a (i)
            a (i) := a (minIndex)
            a (minIndex) := tt
        end if
    end for
end sort
const number := 50
var arr : array 1 .. number of int
for i : 1 .. number
    arr (i) := Rand.Int (1, number)
end for
var arr2 : array 1 .. number of int
for i : 1 .. number
    arr2 (i) := arr (i)
end for
sort (arr)
for i : 1 .. number
    put arr (i), "             ", arr2 (i)
end for


Author:  Catalyst [ Thu May 29, 2003 9:48 pm ]
Post subject: 

the z-sort algorthm will never crash turing (syntax will)
however it can looked screwed up in the right situations


thats a bubble sort inst it?
way too slow for this kind of thing (unless youre using <20polys)
QuickSort is the only way to go

Author:  Homer_simpson [ Thu May 29, 2003 9:59 pm ]
Post subject: 

lol i tried the procedure for z sorting it slows the program downn like hell =/... what way did u use for z sorting in yer engine catalyst?

Author:  Catalyst [ Thu May 29, 2003 10:01 pm ]
Post subject: 

QuickSort (fastest one out there... arguably)

code:
procedure qSort (var a : array 1 .. * of real, var b : array 1 .. * of int, l, h : int)
    if l < h then
        var aH : real
        var bH : int
        var i : int := l;
        var j : int := h
        var mid : real := a (l)
        loop
            loop
                exit when a (i) >= mid
                i += 1
            end loop
            loop
                exit when a (j) <= mid
                j -= 1
            end loop
            if i <= j then
                aH := a (i)
                a (i) := a (j)
                a (j) := aH
                bH := b (i)
                b (i) := b (j)
                b (j) := bH
                i += 1
                j -= 1
            end if
            exit when i > j
        end loop
        qSort (a, b, l, j)
        qSort (a, b, i, h)
    end if
end qSort


: