Computer Science Canada Math.Distance [Tutorial] |
Author: | upthescale [ Mon May 29, 2006 7:21 pm ] | ||||||||||||||||
Post subject: | Math.Distance [Tutorial] | ||||||||||||||||
Ok, lets get a ready for a tutorial that I don't think has yet come in Comp.Sci, and it is obviosuly Math.Distance. Math.Distance, along with many other ways, is a way of creating a 'Hit Detection'...Usually with boxes, you may right in the coordinates liek so:
...Hmm, yes that was the Math way...Well, what about circles? there are ways to do it with circles also...
There are other ways also, but I will explain Math.Distance... First and foremost, you must create the variables...
So now we have a variable for the whole ball, the radius can be whatever number you like, along with the ballx and bally. In this case, the ball will be the size of 30... So let's assume that when the mouse hits the circle, the hit detection will occur, well we haven't created the x and y varialbes for the mouse have we?...
Now we have...Ok, so now we will input the Math.Distance function, I will do it one line by one, and explain each line...Only one line hehe.
Ok, a little confusing but not really. You see the brackets with the 4 variablesi n it, recognize them? Yes they are indeed the variables we declared earlier in the tutorial, mad flashbacks! So we have the mx, and my, ballx and bally all in one package. So when all these meet, and the mouse is les than the radius, then we have a detection. WHAT THE... WHAT THE HECK IS THE *2? well that is easy, because since the radius is in the middle of the circle, we want the detection to happen when we touch the outside of the circle. So by adding the * 2, the program will multiply all around the ball, bringing the detection to tyhe outside of the ball Now we have that covered, but what about wh a circle hits a line? Well, for this, instead of Math.Distance, we will put:
An example would be:
Now, it is the same thing, in this case you aren't using mousewhere, except you have a line (you can use mousewhere if you want, it would still work)...So you have linex,and liney, and the coordinates for the line all in the same package. What you can do is just copy and paste the line into the brackets beside your to other variables. (Don,t use the color, or there will be to many parameters) Pretty Easy? I think so! Here is a little program I put together, not the best coding, but it works:
So I guess that is it for this tutorial on Math.Distance, Happy Programming |
Author: | TheOneTrueGod [ Mon May 29, 2006 8:02 pm ] |
Post subject: | |
Er, not too bad, but the main problem I see here is that a lot of people don't have the Math module in their version of Turing... Also, you're supposed to get these things approved by mods before you post them... I know i'm a hypocrite, I forgot that when I was posting mine. Anyways, instead of using Turings pre-built Math Modules, why not just create your own, that way you actually know whats going on in your code? For this tutorial, you should have at least posted what these functions actually do. For example, post the distance formula. Now, on to the actual tutorial. First and foremost, Quote: if Math.Distance (mx,my,ballx,bally) < radius * 2 then
put"We Have A Detection!" end if radius * 2 is not what you want. You want (circleRadiusOne + CircleRadiusTwo), because if the two circles are of a different size, then radius * 2 wont work. You failed to give this description in your explanation. Also, rather than saying (mx,my,ballx,bally), use what Turing Help gives you, Quote: Math.Distance (x1, y1, x2, y2 : real) : real In your code, it would be assumed that you can only use integers for Math.Distance, but this is not so! Same thing applies to your Math.DistancePointLine code (Though that one was just wrong anyways...) Quote: Math.DistancePointLine (xp, yp, x1, y1, x2, y2 : real) : real xp,yp is the point. (x1,y1) (x2,y2) are the ordered pairs of the line. You said: Quote: Math.DistancePointLine (linex, liney, 600, 200, 600, 300)
I havn't checked over your program yet, but i'll look it over and post again when i'm done with that. |
Author: | Cervantes [ Mon May 29, 2006 8:37 pm ] |
Post subject: | |
It should be noted that Math.Distance and Math.DistancePointLine can be added to your Turing library. Instructions are here. Is it just me and Delos or are these kinds of tutorials aggrivating? For example, is it a good tutorial if the author writes, upthescale wrote: Now we have...Ok, so now we will input the Math.Distance function
It sounds like you really don't know what you're talking about and you are making it up as you go, refusing to use the backspace key. Though once V3 comes out, I guess I'd promote these kinds of submissions is since they won't clog down the 'official' tutorials as they will have their own place. And really, I'll bet upthescale learned a lot while making this tutorial. |
Author: | Delos [ Mon May 29, 2006 10:39 pm ] |
Post subject: | |
Learning is good, to be sure. I will put forth the suggestion I usually do in cases like these, if upthescale would like to improve his tutorial - simply PM either Cervantes or myself and we'll send you the necassary BBCode. Of course, you will have to do a hefty job in making this worthy of some of the other high-class tuts around here. |
Author: | Windsurfer [ Mon Jun 05, 2006 10:12 pm ] | ||||
Post subject: | |||||
People, people! Math.Distance is slow! i don't know why, but i tested it comparing the timing of a function I made:
Using a program as follows, i found that my algorythm is faster:
so yeah... i just felt like sharing that. Would anyone be able to explain Turing's slowness? I'd really like to know, because I've been fighting with it's extremely poor preformance (especially when dealing with graphix... why can't there be some sort of DirectDraw plugin or something for hardware acceleration?) |
Author: | Delos [ Tue Jun 06, 2006 9:11 am ] |
Post subject: | |
Yes Turing is slow with graphics. There is not way around that. It's an interpreted language so that is to be expected. I've heard, overever, that 4.1 is a little better w/ graphics. But then methinks you already use 4.1 so that is of no help in any case. As for DX - not going to happen. If you're at the point where you need to use DX (note: need not want) then it's time for a new language! |
Author: | Windsurfer [ Tue Jun 06, 2006 11:31 am ] |
Post subject: | |
Delos wrote: If you're at the point where you need to use DX (note: need not want) then it's time for a new language!
Ahaha, how right you are! However, since my final project must be written in turing... i have no choice. And, yes, need is the right word. Take a look at my FP http://www.compsci.ca/v2/viewtopic.php?t=12468 |
Author: | evildaddy911 [ Sun Oct 16, 2011 2:54 pm ] |
Post subject: | RE:Math.Distance [Tutorial] |
so what are each of the parameters in Math.DistancePointLine? EDIT sorry, i didnt see that post |