Behold all-new equations for triangles!
Vložit
- čas přidán 25. 04. 2023
- Thanks to Jane Street for supporting this video. Check out their open roles, programs and events: www.janestreet.com/join-jane-...
Here is the original "Is there an equation for a triangle?" video. • Is there an equation f... (I'm taking suggestions for what Part III should be named. Comment below.)
And thanks to everyone who contributed to the triangleness. Here are all the triangles and non-triangles mentioned in this video:
Mohammed Jafari's close-but-not-triangle: www.desmos.com/calculator/hr1...
Generic Viewer's close-but-not-triangle: www.desmos.com/calculator/kzp...
Harrison's non-generalised triangle: www.desmos.com/calculator/cvp...
Idiotinium's non-generalised triangle: www.desmos.com/calculator/svf...
Jaden's non-generalised triangle: www.desmos.com/calculator/uas...
Tristan's non-generalised triangle: www.desmos.com/calculator/pdu...
And Tristan's Zombie Walker: www.desmos.com/calculator/zkc...
Reddit thread generalising triangle equation: / response_to_matt_parke...
Anson Mansfield's generalised triangle: www.desmos.com/calculator/pbz...
Graham Goble's generalised triangle: www.desmos.com/calculator/eax...
Steve's generalised triangle: www.desmos.com/calculator/qy4...
Inigo's triangle in ShaderToy: www.shadertoy.com/view/XsXSz4
Huge thanks to my Patreon supports. They encourage me to triangle my best. / standupmaths
CORRECTIONS
- None yet, let me know if you spot anything!
Filming by Alex Genn-Bash
Editing by Michelle Martin
Diagrams by Sam Hartburn
Written and performed by Matt Parker
Produced by Nicole Jacobus
Music by Howard Carter
Design by Simon Wright and Adam Robinson
MATT PARKER: Stand-up Mathematician
Website: standupmaths.com/
US book: www.penguinrandomhouse.com/bo...
UK book: mathsgear.co.uk/collections/b... - Zábava
I can't believe you didn't call the missing vertices "plot holes".
... *nice*
MASSIVELY underrated comment. Not even 69 smh
Edit: I see it now has over 69 likes but it is still not enough.
Someone gonna steal this idea for a T-Shirt, its so good lol. Bruh hurry up and secure the movie rights xD
@@HasekuraIsuna ... Nice
Would that make the stick man walking a plot twist?
Why not "Tri Harder"?
GENIUS
TriHard 7
Do or do not - there is no triangle
Triangle 3: the Threequel: Tri Harder.
@@sycration Cx
“‘Every triangle’s a love triangle when you love triangles’ - Pythagoras” -James Acaster
Oh wow, that's so James Acaster. Can you say where this joke is from?
"Every love triangle has at least one obtuse angle" (obtuse ~ stupid)
@@JordanBiserkovmeaning none of them are right
(As in morally)
@@vincentfreddoyle7555 It doesn't follow from the axioms. Morality is complicated. You can't control who you fall in love with. You can (and should) control your actions. But you also can (and should) fight for your love ones. And in love (as in war) everything is allowed. Nobody will be judging the winners. Rant over, back to geometry.
@@JordanBiserkov yes,polygons angles surface area
10:00 To get rid of the "annoying dot" at the origin, just multiply the entire equation by (|x|+|y|)/(|x|+|y|). This factor is 1 everywhere except for the origin where the denominator is 0 and therefore the equation becomes undefined.
You could also multiply it by 0^((0^(x^2)) * (0^(y^2))) which basically (ab)uses the convention that 0^0=1 as a logical not gate, and so it's only 1 (true) when not(not(x^2) and not(y^2)) which means not((x^2 = 0) and (y^2 = 0)) and so it's only true when not on the origin
But some triangles have edges that legitimately go through the origin.
*EDIT:* Never mind, I was ignoring some context of that particular part of the video, as others have pointed out below.
@@hughobyrne2588 oh true. Hmmmm, maybe what you can do is use a complicated logical-or kind of equation by basically checking if any of the edges actually include the origin, and if so then calculate the distance from the centre of the triangle, borrowing from another equation from the video
@@kyay10 Not exactly. Your solution is elegant for sure, but doesn't quite do the trick. The goal is to get rid of the 0 at the origin, so multiplying by another 0 doesn't really help. :D
However, you could still use your approach by adding (1-0^((0^(x^2)) * (0^(y^2)))) to the equation. It adds 0 everywhere, excapt at the origin it adds 1.
@@hughobyrne2588 That is true in general but not in the specific graph in question
That walking-stickman plot was BONKERS. 🤣 I never would've thought to create an equation that animates a figure with a single dynamic value.
Wait until you hear about Pixar. And a little variable called T for time 😂
@@aceman0000099 rest assured pixar is not using equations with one variable to render their movies. A game or rendering engine has the game time parameter but that is also not used to run equations, but rather to define the velocity of transformations applied to 3D meshes to render each frame. Each frame per se has no T as input, it just has static vertex positions which get in memory modified every T time.
@@marsovac they get modified in memory according to the curved paths of interpolation, which is an equation that takes position A and Position B and gives you a position in between based on T. Whether it's flash animation or 3D motion capture, there is undoubtedly interpolation and splines involved. I've made animations before.
Personally, I would start with something smooth... some kind of series... I know EXACTLY what I mean, but you'll appreciate it better if you work it out for yourself.
*FURTHERMORE* ... there's a finesse which makes it even better.
*MATT* ... it's not "arbitary" ...the word is arbit *R* ary !!!
The triangular sequel!
We want a triangular trilogy!
*Triangle with a Vengeance*
Triangle prequel: line revolution
Triangle: the quadrilateral dynasty
yes!
Triangle² or Triangle³
It's good to see Inigo getting recognition. He's the shader programming GOAT
I was going to say that
his name is Inigo Mantoya
you killed his father
prepare to die
Inigo has worked on many Pixar films as well (Brave, The Good Dinosaur, Lava)
In 2050 they will teach about Inigo Q in the "history of computing" lessons
I believe I had commented about Inigo's SDF on the original video. He is indeed a shader god and deserves all the recognition.
Of course it’s Inigo Quilez! You can expect the guy to pop up every time something resembling signed distance fields happens. An absolute legend.
His videos are amazing.
An absolute God
Yeah and he not only has equations for a triangle but also for spectacular animated 3d characters with lighting and shadows and scenery!
What a relief, I was lying awake at night wondering when new equations for triangles would come and this is just what I need. Finally, something useful on the internet for once.
😂
I really like the art on your channel
I really like the chart on your anal.
I mean your joke kind of defeats itself a tad at the end when you point out that the internet is known to be full of much, MUCH more information much more useless than this, so it begs the question why the joke would apply to this video in particular
"It was like a triangle that was in a hurry" - absolutely killed me. Coffee spat out everywhere. Thanks Matt.
A Parker triangle, innit?
They dont call him "stand up maths" for no reason.
Inigo, if you're reading this, I miss your paint by maths videos they were spectacular. Thanks for the content and for shadertoy :)
Agreed. Inigo is an absolute genius especially with how he breaks everything down in his explanation videos.
@Beskamir it's the fact that everything is essentially explained from first principles that does it for me. That and the results are visually spectacular.
Shadertoy is so much fun. You go through your life barely using any trigonometry, then you draw even the tiniest shader effect, and oh god so much trig, suddenly everything is trig.
It's especially mind-bending as a programmer, because you're so used to the idea of having explicit objects that you render, and it's a complete shift in perspective to fake the existence of objects with just a function from time and screen position to pixel colour.
trig is like the algebra of higher maths, it apears everywhere
Yeah but unfortunately the idea of rendering objects implicitly to the screen pixel by pixel doesn't seem to really be a thing outside of shadertoy. Fragment shaders like the one you get there are generally used to apply final effects to an individual face pixel by pixel, rather than the entire screen. It's a great playground for sure, but you do typically have real explicit objects to render
_Rendering Worlds with Two Triangles_ is a good introduction for non-graphic programmers, along with my _HOWTO: Ray Marching_ which has tons of examples to play with.
@@__8120 Rendering with fragment shaders (and raymarching) really isn't very popular, but it allows rendering complex shapes using only equations that describe them, which can be very short. That's why it's extensively used in the demoscene, specifically for 4KB/1KB intros.
I'd say that is indeed its most prevalent place, however - it's mainly a thing for artsy programmers and not really used in the graphics world, but I still love it 🥰
@@NitzanBueno oh absolutely
I've been working with HLSL to make arbitrary real time SDF combinations for the last month or so and Inigo's writings on the topic have been invaluable. I recognized the thumbnail immediately. Was quite surprised to see it here.
SDFs are definitely worth an entire video.
Recognized it too!!
Am I the only one who doesn't know what anyone those abbreviations mean? hlsl ? Sdf? How does anyone know those?
@Leif for folks who do programmatic graphics or video game work, they're somewhat common-speak. For everybody else, they're nonsense.
HLSL = High-Level Shader Language
SDF = Signed Distance Field
To learn about the former, you can read online in tutorials anywhere. For Unreal Engine or Unity, you'd be writing shaders in HLSL, so there are plenty of tutorials on the topic. For learning about SDFs, I'd go straight to Inigo's channel and watch some of his wonderful videos.
inigo has their own youtube channel hwere they explain a lot of their code. it really helped me when i was in uni and i was doing some work on 4d shape rendering using raymarching, and he works from first principles which is amazing
Inigo Quilez's SDF videos are so good. Masterpieces in educational content
Good luck with the cinematic universe. But I am holding out for 'Triangle Hard with a Vengeance' caus I love a New York settings for my math thrillers. Can't wait for the scene where you walk through the Financial District with a sandwich board describing a controversial conjecture about triangles infuriating the local population.
I love these community contribution videos!
The sign function shouldn't be a problem. You can represent it as x/abs(x) for any nonzero x. The absolute value can also be the positive solution to sqrt(x^2)
Does the sqrt(x^2) version technically leave some extra values in the imaginary/complex plane? Best case it ends up a second triangle, but that might count as similar to the one with the extra origin dot or the rays out the corners. (Didn't think of x/abs(x) though, clever!)
@@anomaliecosmos The circle equation is the same.
The sign function being undefined at 0 feels very appropriate.
@@anomaliecosmos yes, this fails for nonzero imaginary values, but these do not occur here. shortcuts are important.
@@the1exnay negative zero is fun, but not useful, so positive nulls are asserted.
MUCH worse is that the first derivative of abs() is discontinuous, any 3d shapes with "abs" will always have a shiny-kin/corner at their 1st derivative discontinuity, and that always looks "to oartificial" , unless you enforce "smooth abs" (seach "sabs" on shadertoy)
I was super excited when Inigo Quilez popped up! Glad you took the time to talk a bit about shadertoy.
I don't know how you continue to take one of my most hated subjects at school and make some of the most enjoyable and entertaining content on CZcams.
Thanks for making me want to learn more about maths
❤
you probably didn't hate maths in school because of maths, you probably hated it because of school.
@@theoriginaltubeofyous true, i hated it because of my maths teacher
Thanks Matt, I was not expecting such an excellent and informative video about triangles on a Wednesday, helps a lot!
This was a LOT of fun! My favourite was the affine transformation with the homogeneous co-ordinate matrices. That approach occurred to me immediately as soon as you showed the base triangle for it, because when I was young I spent a lot of time studying computer graphics techniques. Homogeneous co-ordinates are very useful.
15:30
You can just multiply by (1+sqrt(r^2-(x-h)^2-(y-k)^2))
removing that annoying denominator and this way including the vertices of the triangle.
Your video editing is always so amazing, i really need to say it, it's such a pleasure to not only have interesting videos about maths but also so well edited like yours. Thank you so much for your work!
I just wanted to compliment the way you displayed and referred to the desmos equations. It felt really very natural and was a lot more engaging than a box off to the side!
Wow... just re-watched yesterday your original video. Now today there's a part two.
This episode was fascinating to me. I'm in the FEA world working on a smooth potential to describe contact. A very closely related problem. The code at the very end looked like it was possibly based on the old algorithms in FEA with all sorts of problems and issues. Mainly they are only C^0 continuous. Using Non-Newtonian calculus it is possible to build smooth potentials that can describe any arbitrary shape.
The easiest way to make a triangle I think is to use max or min (works for all convex polytopes). Basically just take the max or the min of a bunch of affine-linear functions on the plane and you can get a polygonal-base cone (a generalized pyramid) as a graph of that max/min. Now pick another affine-linear function, could be as simple as just 0, and equate the two. The intersection of the two graphs typically is the border of a convex polygon (and it still is when projected back down onto the domain).
Example: min { |m₁x - y + b₁|, |m₂x - y + b₂|, |m₃x - y + b₃| } = 0 in the notation of the video. You can choose an appropriate sign for each of the absolute values depending on the m's and b's.
Note: max {x, y} = (x + |x - y| + y)/2 and min {x, y} = (x - |x - y| + y)/2, for the guys who don't want special functions.
Note: You can also get weird unbounded "polytopes" in general. This is analogous to how cone intersections may not just give you ellipses but also hyperbolas or even parabolas.
"As a approaches infinity this will approach a triangle" was a way funnier line than one would expect
this is a VERY overused phrase in 8th to 13rth grade maths, usually not with triangles.
But i guess they stopped teaching that maths after the 90s.
The 11:15 solution is just so beautiful. Using such simple concepts and yet getting such a magnificent result.
8:00 I've seen prime computing equations (totally exist, but very long) smaller than that.
Also I have a triangle myself but I can't post it here - it starts as a Isosceles Triangle and you can drag around the corners - it is made by drawing a line from each point to every other point.
Seeing those shapes that are not made up of triangles on Shadertoy was actually a thing of beauty. Maybe one day games will have actual curves being rendered on our GPUs.
First off... it's "Triangle 2: Electric Boogaloo." Secondly, I love that you started with triangles that were Parker Squares.
well, the one at 16:50 is the perfect one. very nice, straightforward and i assume it generalizes to any polygon. at 15:00 it shouldn't be too hard though to find a function that works at the ends too, like 1+sqrt(1-abs(x-1)-abs(x)) for example.
The circumcircle method was clever! The fact that it misses just the three vertices is extremely funny to me haha
There must be a way to add back those 3 missing vertices
@@kazedcat If we take the 'sqrt' function as one that strictly works within the real numbers, i.e. it gives the result 'undefined' for less than zero, zero for zero, and a nonzero positive value for a nonzero positive value, then this trick can be used quite easily - instead of excluding the region outside a circle, excluding a region outside the triangle, as defined by the half-planes indicated by the sides of the triangle.
Get nine values a1 b1 c1 a2 b2 c2 a3 b3 c3 such that aix+biy+ci=0 is an equation for line number 'i' of the triangle, and aix+biy+ci>0 is the half-plane that includes the triangle. Then, the equation sqrt(a1x+b1y+c1)*sqrt(a2x+b2y+c2)*sqrt(a3x+b3y+c3)=0, where the expression is evaluated at all stages in the reals, will give exactly the triangle. The square-roots ensure the expression does not give a value for any point outside the triangle (as long as you're not using complex-number-clever square roots), so if the point is on any line, and the product is defined, the product is zero, and if it's off every line, the product is nonzero.
By far the best video I watched recently, I had a blast, I had a lot of fun! Although I knew most of this. Thank you my mate! I love you!
There's a nice clean way to represent triangles in Desmos, just define a function
l(A,B,t)=A+(B-A)t
and then call
[l(P,Q,t),l(P,R,t),l(Q,R,t)]
where P, Q, and R are all called as points.
The circumcircle solution is so nice. Love the creativity.
That first equation reminds me of the "trick" where rearranges some pieces in a triangle and seems to create an extra square of area in the process, but the resultant is just a quadrilateral that looks very close to a triangle
The original "triangle" is also a quadrilateral. The seemingly straight edge has an angle that is less than 180° by exactly as much as the angle in the final one is more than 180°.
5:30 love the last words and transition
5:27 That's what I'd call a mathematically love triangle
Thanks for providing captions/subtitles!
You can make an equation for a line segment easily: dist(a,p) + dist(p, b) - dist(a,b) = 0. You can then multiply a bunch of segment equations together to make the union of them.
At 2:57, I believe that skewing and stretching the triangle can get you all triangles albeit, rotated and translated in the xy plane, so to fix this you could transform x and y into a new coordinate space x' y' and get all triangles that way.
Basically I am stating that by stretching and skewing the triangle, you can generate any combination of internal angles of the triangle.
Then by change of coordinate space, you can scale, translate, and rotate the triangle to wherever you want in the new coordinate space.
In this video: Matt is excited because he learned a new video editing trick.
I remember stumbling upon inigo’s channel some months ago, some really cool stuff
Conversations for Math aficionados. Truly fantastic.
that n sided shape equation is insane. feel like we need a video just on it
It's not defined for zero but x/abs(x) will give you a one with the sign of x. And since abs can be done by using sqrt(x^2) using sign isn't a bad way.
I think that if you're going to be fine with the absolute value function then you should be fine with the sign function because it's very easy to derive the sign function using the absolute value function
Inigo is a legend. I used his triangle SDF to do 3D collision detection!
I would recognize that SDF shadertoy from anywhere. It’s not a video mentioning SDFs without Inigo Quilez
Inigo is an absolute legend
@@Zolbat Inigo, Keijiro, Ben Golus and more
Signed distance fields are used for ray intersections and font rendering. Great area of maths.
I'm not a specialist or anything, but for me the simplest way to define a triangle is to have 2 vectors and a 3rd vector that is a product of their vector multiplication.
Gen Eric is so much more easy-going than any of the other Gen's ... well done Gen Eric
I literally just re-watched that triangle video today, how serendipitous 😁
The circle capture function is the most elegant attempt so far.
i really like that see-through Desmos!
1:26 subtitles says 'James Street' instead of Jane Street
7:35 Subtitles says 'octan' instead of arctan
12:10 Subtitles says 'F9' instead of (presumable) affine
13:38 'Goebel' instead of Goble
19:56 'gene street'
0:38 subtitles says 'sine function' instead of sign function.
I'm pretty sure they're just autogenerated, so if that's the worst they did a good job.
also 1:26
subtitles say "James tree" instead of Jane Street
It also says "K9" instead of "canine"
10:53 "okay good" instead of "so good".
Triangle is my favorite shape! I'm so glad the sequel finally dropped :D
Thumbnail looks like it is from Indigo Quilez's video. I'm already excited!
Parametric equation of a triangle: p = p0 + r(p1 - p0) + s(p2 - p0), where pn are the 3 vertices, and r, s are scalars. The point p lies within the triangle for 0
"You're missing something infinitely small, which some would say, 'Does that really count?' I think it does." Seems like a bit of a change of heart on the significance of infinitesimals from Mr. Matt Parker.
Today, Matt finds out demosceners have cracked a lot of the math behind aesthetic things, that demosceners are lazy AND efficient enough to make toolchains to go from sliced bread to sliced bread with the whole universe in between, that demosceners eat sleep code repeat, and we're all happily nerding out together.
Matt, next year, visit any demoparty. You will be amazed by the things sceners showcase. Most of the time on a very limited codesize budget, to add to the challenge.
7:59 This here could definitely use some simplification. Unfortunately, you’d probably have to be a bit clever about it. Its various components look very similar to the steps taken when deriving the general area formula for regular n-gons. For that one, you need to cleverly mess around with some sin^2 s and turn them into a cot. For this one, I haven’t started yet.
This is the earliest I’ve ever caught a video 😄
I noticed that with the almost-triangle equation featured around 5:00, there are certain non-integer values of *a* for which it is *extremely* not a triangle. At *a* = 12.5, for example, the almost-vertical almost-line at x = -1 turns into two (almost) lines shooting out from (-1, 2) and (-1, -2).
I'm just over here, being amazed at the overlay of the graphs on top of your face.
Great maths content on CZcams today for sure.
The triangle lore deepens
All Parker tri angles in one place.. love it 🤣
As soon as I saw the thumbnail I knew the video would end in Inigo Quiles. Absolutely insane shader artist
Concerning Graham Goble's entry, would either of the following put the vertices back?
(1) Use his triangle equation as bounds on the same circle and then combine the two results. Essentially using his almost triangle to do what he did from the other side
(2) Do what he did but use calculus to infinitesimally increase the radius of the circle to include the vertices
Today I bought both your books cause I’m in the uk for a family wedding! You’re my favourite educational CZcams channel!
There's something so pure about the joy of math(s) nerds trying to solve somewhat meaningless yet captivating problems. I love it.
1:50 you can actually make a square parallel/perpendicular to the axes like so: abs(x+y) + abs(x-y) = n where n is the square’s side length
IQ is a legend in the shader coding and demoscene communities. Props for showing off his work!
I was NOT read for the Matt Parker jumpscare in the new Captain Disillusion video. Very spooky
18:03
Those, and what follows on the shadertoy example, are called signed distance fields. Pretty usefull for some stuff :)
Curious to know what those n-gon equations give you for non-integer values
What does a shape with pi or sqrt(2) or i sides look like
The funniest video from you last several years
Nice video! I really should've expected iq and shadertoy to be in a video when there's the triangle sdf in the thumbnail haha
Looks like we improved on the Parker triangle.
Can one just take any equation for an arbitrary (non-colinear) triangle, and turn that into an equation for any other triangle, by changing your basis?
(Any function that applies a transformation to the X-Y plane also works as a transformation to all functions on the X-Y plane).
From the very start of this video, I just knew Inigo Quilez would have the best, simplest, most precise answer (even if he hadn't submitted one). The one with the circle "cropping" the triangle was also good.
The sign function is legit. I use it sometimes in my own programming as its very cheap to obtain the high bit of a float or double.
16:00 OOH YES it matters VERY much if your interval (for line-segments) is a closed-interval, open-interval or half-open-interval.
I saw countless shadertoy-shaders that pondered about interval-error-cases, significantly losing out on precision or even losing out on performance.
intervals become VERY tricky close to undefined/asymptotes, and you generally want to "rather have this area undefined (or replaced by a simpler non-asymptotic smoothing-function) than having it at a too low precision, too close to an asymptote" boundary near asymptotes. And that boundary better be a half-open-interval.
a smoothing--function ideally is continuous, and for that you want an open-interval, but you to not want to use the slower function for the same point+solution, where 2 functions met, and then you better pick the right intervals where 2 functions switch.
10:43 « l'équation zombie » 🤣
:) Fun video. Very enjoyed
I liked that safety triangle with the rounded corners. ;)
Anybody who's even dabbled in graphics programming should recognise the thumbnail immediately. Inigo's resources have saved/enabled all our asses continually
Regarding the second solution aka the anonymous one. Wouldn't a quick workaround to make that "disc"-triangle into a "circle"-triangle be to put it into a modulo?
I'd never noticed how fuzzy Matts ears are.
But it makes sense. As a number ninja he can't wear ear muffs, since that would dampen the sound of any assassin integrals sneaking up on him, so he uses a natural alternative.
I found an easier solution. Use a variation on polar coordinates where θ is the angle but r is the distance from the desired triangle. Then every triangle is just 'r = 0' but with a different coordinate system 🙃
Instead of the sign function, it could use |cos(pi t) - 1| /2 . That outputs 1 for odd values and ) for even, just switch the - to a + to reverse it. Multiply the individual multipliers by this to use or negate them. I made it up while making a Collatz Conjecture Desmos graph :) .
I got it without trig functions with: sign(x) = -2mod(x, |x|+1)+|x|+1+x, this gives 1 for x>=0 and -1 for x
@@karibui494 ideally you would want to get 0 for x=0 but i think its possible to convert this into something we can define floor as x-((cot^-1(cot(πx)))/π) and then use floor(tanh(x))-floor(tanh(-x)) to get sign(x)
sign(x) is actually exactly the same as normalization for vectors, which is usually written as v/|v|. This works for real numbers as well though doesn't include 0. Absolute value can be found the same way as other things as well with sqrt(x²). (Technically sqrt(x*conj(x)), but the conjugate of a real number is itself.)
@@satindra.r setting sign(0) = 0, wouldn't remove the edges in this case?
@@satindra.r I played around and found: mod(-x, |x|+1)+(x-|x|)/2 this is 1 for x > 0 and 0 for x
Shader code is like a different universe of code, it's so much fun.
"every triangle is a love triangle. If you love triangles" - Pythagoras, probably
Hey, that is exactly how I look and how I walk. It's amazing!
Really cool and fun video. I think it deservers a Triangulogy.
15:43 On the vertices, the distance should be exactly r, so the argument of the square root should be 0, so the equation would still be defined and true on the vertices.
Edit: nvm I missed the part where it cuts out the entire circle of radius r afterwards
But it is defined there. And the limit of the 0/0 term = 1, not undefined.
This confused me as well, didn't realize there was a ^1/4 in the denominator.
@@simonwillover4175 Usually 0/0 is taken to be undefined, not 1 or any other value. Even the limit of x/x as x goes to 0 is undefined. But we aren't taking a limit here, so I don't think it's relevant.
@@simonwillover4175 it's okay to be wrong about 0/0 but please don't say it as if correcting someone