Why? Because you will end up dividing by zero when points intersect!
For example, look at "/ ((By-Ay)*(Ex-Dx)-(Bx-Ax)*(Ey-Dy))", which is at the end of the formula ... what happens when point A and B have the same position?
]]>S.i=1 / 4*(Ax*(Cy-By+((Ax-Dx)*(By-Ay)*(Ey-Dy)+Dy*(By-Ay)*(Ex-Dx)-Ay*(Bx-Ax)*(Ey-Dy)) / ((By-Ay)*(Ex-Dx)-(Bx-Ax)*(Ey-Dy))-((Cx-Dx)*(Ay-Cy)*(Ey-Dy)+Dy*(Ay-Cy)*(Ex-Dx)-Cy*(Ax-Cx)*(Ey-Dy)) / ((Ay-Cy)*(Ex-Dx)-(Ax-Cx)*(Ey-Dy)))+Bx*(Ax-Cy+((Bx-Ex)*(Cy-By)*(Fy-Ey)+Ey*(Cy-By)*(Fx-Ex)-By*(Cx-Bx)*(Fy-Ey)) / ((Cy-By)*(Fx-Ex)-(Cx-Bx)*(Fy-Ey))-((Ax-Ex)*(By-Ay)*(Fy-Ey)+Ey*(By-Ay)*(Fx-Ex)-Ay*(Bx-Ax)*(Fy-Ey)) / ((By-Ay)*(Fx-Ex)-(Bx-Ax)*(Fy-Ey)))+Cx*(By-Ay+((Cx-Fx)*(Ay-Cy)*(Dy-Fy)+Fy*(Ay-Cy)*(Dx-Fx)-Cy*(Ax-Cx)*(Dy-Fy)) / ((Ay-Cy)*(Dx-Fx)-(Ax-Cx)*(Dy-Fy))-((Bx-Fx)*(Cy-By)*(Dy-Fy)+Fy*(Cy-By)*(Dx-Fx)-By*(Cx-Bx)*(Dy-Fy)) / ((Cy-By)*(Dx-Fx)-(Cx-Bx)*(Dy-Fy)))+Dx*(Fy-Ey+((Cx-Dx)*(Ay-Cy)*(Ey-Dy)+Dy*(Ay-Cy)*(Ex-Dx)-Cy*(Ax-Cx)*(Ey-Dy)) / ((Ay-Cy)*(Ex-Dx)-(Ax-Cx)*(Ey-Dy))-((Cx-Fx)*(Ay-Cy)*(Dy-Fy)+Fy*(Ay-Cy)*(Dx-Fx)-Cy*(Ax-Cx)*(Dy-Fy)) / ((Ay-Cy)*(Dx-Fx)-(Ax-Cx)*(Dy-Fy)))+Ex*(Dy-Fy+((Ax-Ex)*(By-Ay)*(Fy-Ey)+Ey*(By-Ay)*(Fx-Ex)-Ay*(Bx-Ax)*(Fy-Ey)) / ((By-Ay)*(Fx-Ex)-(Bx-Ax)*(Fy-Ey))-((Ax-Dx)*(By-Ay)*(Ey-Dy)+Dy*(By-Ay)*(Ex-Dx)-Ay*(Bx-Ax)*(Ey-Dy)) / ((By-Ay)*(Ex-Dx)-(Bx-Ax)*(Ey-Dy)))+Fx*(Ey-Dy+((Bx-Fx)*(Cy-By)*(Dy-Fy)+Fy*(Cy-By)*(Dx-Fx)-By*(Cx-Bx)*(Dy-Fy)) / ((Cy-By)*(Dx-Fx)-(Cx-Bx)*(Dy-Fy))-((Bx-Ex)*(Cy-By)*(Fy-Ey)+Ey*(Cy-By)*(Fx-Ex)-By*(Cx-Bx)*(Fy-Ey)) / ((Cy-By)*(Fx-Ex)-(Cx-Bx)*(Fy-Ey)))+((Ay-Dy)*(Bx-Ax)*(Ex-Dx)+Dx*(Bx-Ax)*(Ey-Dy)-Ax*(By-Ay)*(Ex-Dx)) / ((Bx-Ax)*(Ey-Dy)-(By-Ay)*(Ex-Dx))*(((Cx-Dx)*(Ay-Cy)*(Ey-Dy)+Dy*(Ay-Cy)*(Ex-Dx)-Cy*(Ax-Cx)*(Ey-Dy)) / ((Ay-Cy)*(Ex-Dx)-(Ax-Cx)*(Ey-Dy))-Ay+Ey-((Ax-Ex)*(By-Ay)*(Fy-Ey)+Ey*(By-Ay)*(Fx-Ex)-Ay*(Bx-Ax)*(Fy-Ey)) / ((By-Ay)*(Fx-Ex)-(Bx-Ax)*(Fy-Ey)))+((Ay-Ey)*(Bx-Ax)*(Fx-Ex)+Ex*(Bx-Ax)*(Fy-Ey)-Ax*(By-Ay)*(Fx-Ex)) / ((Bx-Ax)*(Fy-Ey)-(By-Ay)*(Fx-Ex))*(((Ax-Dx)*(By-Ay)*(Ey-Dy)+Dy*(By-Ay)*(Ex-Dx)-Ay*(Bx-Ax)*(Ey-Dy)) / ((By-Ay)*(Ex-Dx)-(Bx-Ax)*(Ey-Dy))-Ey+By-((Bx-Ex)*(Cy-By)*(Fy-Ey)+Ey*(Cy-By)*(Fx-Ex)-By*(Cx-Bx)*(Fy-Ey)) / ((Cy-By)*(Fx-Ex)-(Cx-Bx)*(Fy-Ey)))+((By-Ey)*(Cx-Bx)*(Fx-Ex)+Ex*(Cx-Bx)*(Fy-Ey)-Bx*(Cy-By)*(Fx-Ex)) / ((Cx-Bx)*(Fy-Ey)-(Cy-By)*(Fx-Ex))*(((Ax-Ex)*(By-Ay)*(Fy-Ey)+Ey*(By-Ay)*(Fx-Ex)-Ay*(Bx-Ax)*(Fy-Ey)) / ((By-Ay)*(Fx-Ex)-(Bx-Ax)*(Fy-Ey))-By+Fy-((Bx-Fx)*(Cy-By)*(Dy-Fy)+Fy*(Cy-By)*(Dx-Fx)-By*(Cx-Bx)*(Dy-Fy)) / ((Cy-By)*(Dx-Fx)-(Cx-Bx)*(Dy-Fy)))+((By-Fy)*(Cx-Bx)*(Dx-Fx)+Fx*(Cx-Bx)*(Dy-Fy)-Bx*(Cy-By)*(Dx-Fx)) / ((Cx-Bx)*(Dy-Fy)-(Cy-By)*(Dx-Fx))*(((Bx-Ex)*(Cy-By)*(Fy-Ey)+Ey*(Cy-By)*(Fx-Ex)-By*(Cx-Bx)*(Fy-Ey)) / ((Cy-By)*(Fx-Ex)-(Cx-Bx)*(Fy-Ey))-Fy+Cy-((Cx-Fx)*(Ay-Cy)*(Dy-Fy)+Fy*(Ay-Cy)*(Dx-Fx)-Cy*(Ax-Cx)*(Dy-Fy)) / ((Ay-Cy)*(Dx-Fx)-(Ax-Cx)*(Dy-Fy)))+((Cy-Fy)*(Ax-Cx)*(Dx-Fx)+Fx*(Ax-Cx)*(Dy-Fy)-Cx*(Ay-Cy)*(Dx-Fx)) / ((Ax-Cx)*(Dy-Fy)-(Ay-Cy)*(Dx-Fx))*(((Bx-Fx)*(Cy-By)*(Dy-Fy)+Fy*(Cy-By)*(Dx-Fx)-By*(Cx-Bx)*(Dy-Fy)) / ((Cy-By)*(Dx-Fx)-(Cx-Bx)*(Dy-Fy))-Cy+Dy-((Cx-Dx)*(Ay-Cy)*(Ey-Dy)+Dy*(Ay-Cy)*(Ex-Dx)-Cy*(Ax-Cx)*(Ey-Dy)) / ((Ay-Cy)*(Ex-Dx)-(Ax-Cx)*(Ey-Dy)))+((Cy-Dy)*(Ax-Cx)*(Ex-Dx)+Dx*(Ax-Cx)*(Ey-Dy)-Cx*(Ay-Cy)*(Ex-Dx)) / ((Ax-Cx)*(Ey-Dy)-(Ay-Cy)*(Ex-Dx))*(((Cx-Fx)*(Ay-Cy)*(Dy-Fy)+Fy*(Ay-Cy)*(Dx-Fx)-Cy*(Ax-Cx)*(Dy-Fy)) / ((Ay-Cy)*(Dx-Fx)-(Ax-Cx)*(Dy-Fy))-Dy+Ay-((Ax-Dx)*(By-Ay)*(Ey-Dy)+Dy*(By-Ay)*(Ex-Dx)-Ay*(Bx-Ax)*(Ey-Dy)) / ((By-Ay)*(Ex-Dx)-(Bx-Ax)*(Ey-Dy))))
[Copyright © 2005 by sonyafterdark ]
]]>512: Formula overflow
Compiler: the total number of internal tokens, (that is, operators, variables, brackets) in the formula exceeds 512. Interpreter: the total number of matrices that the formula creates exceeds 150. This includes basic functions that receive too large an array as a parameter (max. 0xFFFE, for example, 65534 bytes).
Now, isn't that nice?!!! Just Great!!! X(
]]>S.i = AREA of the surface of intersection between the whatever 2 triangles. Should range between 0 and, well, a really big positive number. Otherwise I probably need to snap and abs() around the whole thing .
A, B, C = the three tips of the first triangle.
D, E, F = the three tips of the second triangle.
.x, .y = the x and y coordinates of a tip. Not having tested this, I'm not ENTIRELY sure it actually works, but even if it doesn't, it probably only need some minor adjustments here and there, like an abs() or improved clockwise/counterclockwise triangle tip enumeration handling. Guess I'll just have to test it unsimplified. Course, I'll use Excell .
S.i=1/4*(A.x*(C.y-B.y+((A.x-D.x)*(B.y-A.y)*(E.y-D.y)+D.y*(B.y-A.y)*(E.x-D.x)-A.y*(B.x-A.x)*(E.y-D.y))/((B.y-A.y)*(E.x-D.x)-(B.x-A.x)*(E.y-D.y))-((C.x-D.x)*(A.y-C.y)*(E.y-D.y)+D.y*(A.y-C.y)*(E.x-D.x)-C.y*(A.x-C.x)*(E.y-D.y))/((A.y-C.y)*(E.x-D.x)-(A.x-C.x)*(E.y-D.y)))+B.x*(A.x-C.y+((B.x-E.x)*(C.y-B.y)*(F.y-E.y)+E.y*(C.y-B.y)*(F.x-E.x)-B.y*(C.x-B.x)*(F.y-E.y))/((C.y-B.y)*(F.x-E.x)-(C.x-B.x)*(F.y-E.y))-((A.x-E.x)*(B.y-A.y)*(F.y-E.y)+E.y*(B.y-A.y)*(F.x-E.x)-A.y*(B.x-A.x)*(F.y-E.y))/((B.y-A.y)*(F.x-E.x)-(B.x-A.x)*(F.y-E.y)))+C.x*(B.y-A.y+((C.x-F.x)*(A.y-C.y)*(D.y-F.y)+F.y*(A.y-C.y)*(D.x-F.x)-C.y*(A.x-C.x)*(D.y-F.y))/((A.y-C.y)*(D.x-F.x)-(A.x-C.x)*(D.y-F.y))-((B.x-F.x)*(C.y-B.y)*(D.y-F.y)+F.y*(C.y-B.y)*(D.x-F.x)-B.y*(C.x-B.x)*(D.y-F.y))/((C.y-B.y)*(D.x-F.x)-(C.x-B.x)*(D.y-F.y)))+D.x*(F.y-E.y+((C.x-D.x)*(A.y-C.y)*(E.y-D.y)+D.y*(A.y-C.y)*(E.x-D.x)-C.y*(A.x-C.x)*(E.y-D.y))/((A.y-C.y)*(E.x-D.x)-(A.x-C.x)*(E.y-D.y))-((C.x-F.x)*(A.y-C.y)*(D.y-F.y)+F.y*(A.y-C.y)*(D.x-F.x)-C.y*(A.x-C.x)*(D.y-F.y))/((A.y-C.y)*(D.x-F.x)-(A.x-C.x)*(D.y-F.y)))+E.x*(D.y-F.y+((A.x-E.x)*(B.y-A.y)*(F.y-E.y)+E.y*(B.y-A.y)*(F.x-E.x)-A.y*(B.x-A.x)*(F.y-E.y))/((B.y-A.y)*(F.x-E.x)-(B.x-A.x)*(F.y-E.y))-((A.x-D.x)*(B.y-A.y)*(E.y-D.y)+D.y*(B.y-A.y)*(E.x-D.x)-A.y*(B.x-A.x)*(E.y-D.y))/((B.y-A.y)*(E.x-D.x)-(B.x-A.x)*(E.y-D.y)))+F.x*(E.y-D.y+((B.x-F.x)*(C.y-B.y)*(D.y-F.y)+F.y*(C.y-B.y)*(D.x-F.x)-B.y*(C.x-B.x)*(D.y-F.y))/((C.y-B.y)*(D.x-F.x)-(C.x-B.x)*(D.y-F.y))-((B.x-E.x)*(C.y-B.y)*(F.y-E.y)+E.y*(C.y-B.y)*(F.x-E.x)-B.y*(C.x-B.x)*(F.y-E.y))/((C.y-B.y)*(F.x-E.x)-(C.x-B.x)*(F.y-E.y)))+((A.y-D.y)*(B.x-A.x)*(E.x-D.x)+D.x*(B.x-A.x)*(E.y-D.y)-A.x*(B.y-A.y)*(E.x-D.x))/((B.x-A.x)*(E.y-D.y)-(B.y-A.y)*(E.x-D.x))*(((C.x-D.x)*(A.y-C.y)*(E.y-D.y)+D.y*(A.y-C.y)*(E.x-D.x)-C.y*(A.x-C.x)*(E.y-D.y))/((A.y-C.y)*(E.x-D.x)-(A.x-C.x)*(E.y-D.y))-A.y+E.y-((A.x-E.x)*(B.y-A.y)*(F.y-E.y)+E.y*(B.y-A.y)*(F.x-E.x)-A.y*(B.x-A.x)*(F.y-E.y))/((B.y-A.y)*(F.x-E.x)-(B.x-A.x)*(F.y-E.y)))+((A.y-E.y)*(B.x-A.x)*(F.x-E.x)+E.x*(B.x-A.x)*(F.y-E.y)-A.x*(B.y-A.y)*(F.x-E.x))/((B.x-A.x)*(F.y-E.y)-(B.y-A.y)*(F.x-E.x))*(((A.x-D.x)*(B.y-A.y)*(E.y-D.y)+D.y*(B.y-A.y)*(E.x-D.x)-A.y*(B.x-A.x)*(E.y-D.y))/((B.y-A.y)*(E.x-D.x)-(B.x-A.x)*(E.y-D.y))-E.y+B.y-((B.x-E.x)*(C.y-B.y)*(F.y-E.y)+E.y*(C.y-B.y)*(F.x-E.x)-B.y*(C.x-B.x)*(F.y-E.y))/((C.y-B.y)*(F.x-E.x)-(C.x-B.x)*(F.y-E.y)))+((B.y-E.y)*(C.x-B.x)*(F.x-E.x)+E.x*(C.x-B.x)*(F.y-E.y)-B.x*(C.y-B.y)*(F.x-E.x))/((C.x-B.x)*(F.y-E.y)-(C.y-B.y)*(F.x-E.x))*(((A.x-E.x)*(B.y-A.y)*(F.y-E.y)+E.y*(B.y-A.y)*(F.x-E.x)-A.y*(B.x-A.x)*(F.y-E.y))/((B.y-A.y)*(F.x-E.x)-(B.x-A.x)*(F.y-E.y))-B.y+F.y-((B.x-F.x)*(C.y-B.y)*(D.y-F.y)+F.y*(C.y-B.y)*(D.x-F.x)-B.y*(C.x-B.x)*(D.y-F.y))/((C.y-B.y)*(D.x-F.x)-(C.x-B.x)*(D.y-F.y)))+((B.y-F.y)*(C.x-B.x)*(D.x-F.x)+F.x*(C.x-B.x)*(D.y-F.y)-B.x*(C.y-B.y)*(D.x-F.x))/((C.x-B.x)*(D.y-F.y)-(C.y-B.y)*(D.x-F.x))*(((B.x-E.x)*(C.y-B.y)*(F.y-E.y)+E.y*(C.y-B.y)*(F.x-E.x)-B.y*(C.x-B.x)*(F.y-E.y))/((C.y-B.y)*(F.x-E.x)-(C.x-B.x)*(F.y-E.y))-F.y+C.y-((C.x-F.x)*(A.y-C.y)*(D.y-F.y)+F.y*(A.y-C.y)*(D.x-F.x)-C.y*(A.x-C.x)*(D.y-F.y))/((A.y-C.y)*(D.x-F.x)-(A.x-C.x)*(D.y-F.y)))+((C.y-F.y)*(A.x-C.x)*(D.x-F.x)+F.x*(A.x-C.x)*(D.y-F.y)-C.x*(A.y-C.y)*(D.x-F.x))/((A.x-C.x)*(D.y-F.y)-(A.y-C.y)*(D.x-F.x))*(((B.x-F.x)*(C.y-B.y)*(D.y-F.y)+F.y*(C.y-B.y)*(D.x-F.x)-B.y*(C.x-B.x)*(D.y-F.y))/((C.y-B.y)*(D.x-F.x)-(C.x-B.x)*(D.y-F.y))-C.y+D.y-((C.x-D.x)*(A.y-C.y)*(E.y-D.y)+D.y*(A.y-C.y)*(E.x-D.x)-C.y*(A.x-C.x)*(E.y-D.y))/((A.y-C.y)*(E.x-D.x)-(A.x-C.x)*(E.y-D.y)))+((C.y-D.y)*(A.x-C.x)*(E.x-D.x)+D.x*(A.x-C.x)*(E.y-D.y)-C.x*(A.y-C.y)*(E.x-D.x))/((A.x-C.x)*(E.y-D.y)-(A.y-C.y)*(E.x-D.x))*(((C.x-F.x)*(A.y-C.y)*(D.y-F.y)+F.y*(A.y-C.y)*(D.x-F.x)-C.y*(A.x-C.x)*(D.y-F.y))/((A.y-C.y)*(D.x-F.x)-(A.x-C.x)*(D.y-F.y))-D.y+A.y-((A.x-D.x)*(B.y-A.y)*(E.y-D.y)+D.y*(B.y-A.y)*(E.x-D.x)-A.y*(B.x-A.x)*(E.y-D.y))/((B.y-A.y)*(E.x-D.x)-(B.x-A.x)*(E.y-D.y))))
Told you it's horrid, didn't I?
By the way: I really, really don't get what www.ti.org has to do with this? Could you please give me a direct link to the stuff you indicated?
]]>I've got this huge expression that's just useless in its current form and it really isn't humanly possible to tackle it manually. I really need to get it more compact to make any use of it. Already tried QuickMath, got a WebMathematica timeout error seemingly cause the expression is so large it exceeds allocated processor time or somethin' like that. And nothing else i found even got close to QuickMath. I'm sure the sintax is correct, the brackets are balanced, etc.
Oh, and by the way... the expression is a function of whatever 2 triangles' respective tips' coordinates and should return the area of intersection, if any, between the 2 triangles. Obviously untested.
10q very much. Cheers!!!
]]>