Discuss: Code copyright and legal issues

Pages: 1234
https://www.physicsforums.com/threads/point-or-vector-whats-the-difference.133264/

42 doesn't need to start at 0

42 does't start at anything, it is a point. Locations don't have starting points and ending points, they are the points themselves. If you say something like starts at, you are talking about a vector.

http://mathworld.wolfram.com/Point.html
http://mathworld.wolfram.com/Vector.html
Last edited on
42 does't start at anything, it is a point. Locations don't have starting points and ending points, they are the points themselves.
That's precisely it. A vector in, say, R^2 is of the form (x, y) where both x and y are reals. Where does the "start point" go, if neither x nor y start anywhere?
A vector in a vector space starts at the origin, because points don't exist in a vector space. This one main difference between calculus and linear algebra, you are working in different space. The space you work with in calculus is an extension of a vector space to include additional objects such as points, lines, curves, geometric shapes, etc. This is why you learn in calculus that a vector is defined by a pair of points, (p1, p2), where as in linear algebra, in a vector space, points don't exist, and all vectors are simply a length and direction from the origin.

Sometimes in general, you may assume that the starting point is (0,0), in which case, the first point that defines the vector is implicit, but in that case, in a space that includes points, <x,y>, is really ( (0,0), (x,y) ).

I'm sure it's possible to do everything you need to do with just vectors, because there is a bijection between points and vectors when assuming the vectors start at the origin. This doesn't mean they are the same thing, only that you can work with vectors instead of points and get the same results if you account for the difference.

I don't doubt that Tition is a brilliant Mathematician, or that he can simplify some calculus by doing away with points and just using vectors, but I also think that almost all Mathematicians and Math sources make a distinction between the two things.
Last edited on
https://www.physicsforums.com/threads/point-or-vector-whats-the-difference.133264/

"Vector is an ordered pair of points": this one of the few authors that actually knows what he is talking about. However, what he calls "vector" in english is called "displacement vector", and in Bulgarian it's called "arrow". A "displacement vector" is not a vector. Displacement vectors do not satisfy the axioms of a vector space. Vectors can be defined as equivalence classes (set-theoretically) of displacement vectors. Here's my exposition of the subject:

https://s3.amazonaws.com/piazza-resources/hzm2m89mo6790/hzzq6vg3mi3j8/Lecture2_Vectors_Dot_Product_2014_Fall_Calculus_III_Math_242.pdf?AWSAccessKeyId=AKIAJKOQYKAYOBKKVTKQ&Expires=1413013232&Signature=iS9l0tySDsMXYi0skDaguOHUIFU%3D

***Has to be viewed full screen. A non-full screen version is on our to-do list***

I don't doubt that Tition is a brilliant Mathematician, or that he can simplify some calculus by doing away with points and just using vectors,


The fact that I am teaching calculus III (instead of a specialized seminar in algebra, for example) pretty much proves that I am a failed mathematician. Brilliant mathematicians do not teach Calc III.

but I also think that almost all Mathematicians and Math sources make a distinction between the two things.

No, most mathematicians make no such distinction at all. This distinction is spread by misinformed authors of calculus textbooks specifically in the US. There is no such bullshit in Germany (did my phd there) nor in Russia (studied by Russian texts, also my advisor was a Moscow state graduate). Here's the German wikipedia page on vectors:

http://de.wikipedia.org/wiki/Vektor

(you can use Google translate)
Last edited on
I've been LOLing over this thread for a while now.

@htirwin
So, wait, you're a newbie college student just now learning about computer graphics stuff and you're really trying to edumacate tition about math?

You might want to reconsider why you are trying to argue the point (pun intended) so strenuously. Your statements are starting to look more and more weenie too. Such as:
Points are locations in space and nothing more. This is how they are defined in computer graphics/linear algebra, and also in physics and calculus.
Having studied (and done very well) in all those subjects, I can tell you that's nonsense.

I'm also unsure what kind of differences your professor may have been feeding you about points and vectors in computer science, because they are interchangeable. All modern graphics pipelines use this fact to their advantage when applying affine transformations. It's used in everything, 3D graphics, ray-tracing, physical modeling, particle systems -- and even things outside the CG industry. Their equivalence underlies the function of all these system.

Also, I'm unsure why you are trying so hard to say that calculus and linear algebra cover different spaces, or that things somehow work differently between the two. Linear algebra is perfectly suited to solving n-dimensional equations, like curves and functions (gasp!). That's how, frankly, you define a space.

Just because you want to project stuff into your visual world one specific way means nothing for how things work outside of that view.

What you are doing is playing with your own version of vocabulary and trying to hoist it on others.

Just admit you're wrong and get on with your life.

@tition
You've been spot-on about math (vocabulary) here in the US too.

The main difficulty in mathematical concepts from country/culture to country/culture these days is really in underlying assumed nomenclature and notation. I only understand basic stuff used in US and western countries, so when I see something else I get really lost.

Though, I suppose if you become famous enough, even your own personal notation gets used by others. Like Einstein.

But, also totally agree on textbooks. Also, where do they find the trees to make the things? That's some seriously heavy paper! (Please print your textbook on something that weighs less than its equivalent volume in bricks.)

Anyway, just had to say my piece:

Peace!
Last edited on
I've always wondered if they purchased heavy ink to print on the pages of textbooks.
@htirwin, Duoas
Mathematics is democratic and certainly htirwin's opinion is no less important than mine. He certainly has full right to argue with anyone on earth on which definition is/should be the commonly accepted one. Selection of definitions is, believe it or not, a bit of a matter of taste. His definitions completely make sense. What I don't agree with is that these definitions should be taught as standard.

One should never be intimidated by the authority of the other side of the argument. By the way, I don't have any authority in real life, I am the lowest of the low lecturers. By the same token however, the authority of my words should not automatically be assumed lower than that of the calculus textbook's writer.

I also used a few harsh words in the posts above - sorry for that! Been struggling with a piece of code for weeks and that is spilling into badmouthing people when I should be badmouthing my own programming skill.
Last edited on
I don't think there's a point (pun intended) in arguing about whether or not points and vectors are different things without first providing a comparison context in some sense, i.e. definitions for these two terms that we agree upon.

Let's e.g. define a point as an element of an affine space [1] and a vector as an element of a vector space [2].

In this context, the following is not true:

vectors are simply points in a vector space (by definition)

However, since any vector space is an affine space over itself, (again, according to the context) this is:

vectors are simply points in a vector space

[1] http://en.wikipedia.org/wiki/Affine_space#Definition
[2] http://en.wikipedia.org/wiki/Vector_space#Definition

EDIT: I just realized that this thread's topic started as something different and the last two and a half
pages were just a big digression. Can we revert back to the original topic? I'm interested in that too :)
Last edited on
What I don't agree with is that these definitions should be taught as standard.

Exactly. As I said, he's playing with his vocabulary and trying to make everyone else use it. When he becomes Einstein other people may care, but before then, it's incumbent on him to accept the world's standard vocabulary (for as much as that exists). I wouldn't have been LOLing all this time if he weren't determined to prove you wrong.

My whole point is that we need to use common vocabulary when discussing things in common. (Which is why the standard vocabulary should be used in textbooks.)

Now that we've rolled full circle a couple of times, I'm off to join the tautology club.
http://xkcd.com/703/
LOL.
Computer scientists aren't lawyers because computer scientists aren't lawyers.
What about language lawyers?
What you are doing is playing with your own version of vocabulary and trying to hoist it on others.

Just admit you're wrong and get on with your life.

What a bunch of BS. You obviously have no clue about mathematics. All I have done is state standard mainstream definitions, at least in the US. I guess different countries have different definitions or maybe there is a mix up between languages about word meanings in relation to their context.

@htirwin
So, wait, you're a newbie college student just now learning about computer graphics stuff and you're really trying to edumacate tition about math?

It's an upper division graphics course and I'm a senior. What does this matter though? And how does this imply I am a newbie, or just learning about computer graphics. There are PHD students in the class too. And by the way, there are graphics graduate level computer graphics courses as well. For all you know I could be in my 4th year of a PHD program and be taking a course in computer graphics. Hell, I could have a PHD in mathematics and be taking a computer graphics course.

My whole point is that we need to use common vocabulary when discussing things in common. (Which is why the standard vocabulary should be used in textbooks.)

Please show me a formal definition of a point and vector, or space and tell me how it differs from anything I have stated thus far.

Also, I'm unsure why you are trying so hard to say that calculus and linear algebra cover different spaces, or that things somehow work differently between the two. Linear algebra is perfectly suited to solving n-dimensional equations, like curves and functions (gasp!). That's how, frankly, you define a space.

What does that have to do with what a vector space is? And what is how you define a space? You never said how?

Just because you want to project stuff into your visual world one specific way means nothing for how things work outside of that view.

It has nothing to do with "visual world" whatever that means. It has to do with axioms and this is fundamental to mathematics. These axioms are so precise, that there is no room at all for argument what a vector space is, about choice of axioms, but then you are arguing about something different and or attempting to use two words to mean two different things. Different axioms means different system.


Now that we've rolled full circle a couple of times

What are you talking about, you have not made a single valid argument nor have you referenced a single piece of relevant information. Your entire post is just a large collection of fallacy and insult and you're the one bringing up tautology?

This guy explains the differences pretty well.

Some math and physics libraries contain separate data types to represent points and vectors. I’ve seen many people become confused by this, since more commonly packages use vectors exclusively for everything. What’s going on here? Why have 2 separate types? Well, the answer is quite simple. Strictly speaking, a point is not a vector and a vector is not a point! We’ll come back to why many packages, XNA included, use vectors to represent points and why that can make sense later.

...

Implementation of Points as Vectors

So, now that we know that points are different from vectors, why do many libraries implement points as vectors? Surely, this can’t be, since we just discovered that we can add vectors but can’t add points, amongst other differences, right? Well, the answer is somewhat complicated. Technically, both points and vectors can be represented by the same data on the computer, which in the case of 3D is 3 floating or double precision values. However, the operations that are allowed for each type varies. Instead of implementing two nearly identical types, with just a different set of operators on them, most packages opt to leave the interpretation of the data up to the user, and just use a single implementation which can perform all the operations. This can lead to many algorithmic bugs if users aren’t aware of how they’re using them, but it’s a common tradeoff nonetheless.

In some packages, they use a single 4-element vector to represent both concepts, using a 1 in the last element (usually called w) for points, and a 0 for vectors. This actually helps loosely enforce the rules above, since subtracting two points would give 1 – 1 = 0 in the w field, which makes it a vector. And adding a vector to a point would leave 1, making it a point. Adding two points would make 2 in the w field, which is invalid as expected. However, this scheme uses considerably more memory (33% more in the case of 3D) with little real world benefit.

So, ultimately, as long as we mentally consider our points as locations and our vectors as displacements in our calculations, then we can at least use the same data structure for both, saving on space and code duplication. We just need to be careful that our algorithms don’t do any mathematically invalid operations on these types, which the compiler won’t catch for us. In order to use a vector as a point, we treat it as the relative displacement from the origin, 0. This will give the exact same Cartesian coordinates as the point would have had, now in the form of a vector.


http://blogs.msdn.com/b/rezanour/archive/2011/05/19/math-primer-vectors-i-points-vs-vectors.aspx

Maybe Tition is right about the mainstream US definitions of vectors and points being non-optimal. Maybe in Germany and other countries definitions and rules are different. Unfortunate I was educated according to US practices. I would still like to see some reference so that I can get a better understanding. Unfortunately I do not speak any other languages and cannot find a single source in my language about this.
Last edited on
If you ever use the phrase "just admit you're wrong", there is something seriously flawed with your intentions.
> In some packages, they use a single 4-element vector to represent both concepts,
> using a 1 in the last element (usually called w) for points, and a 0 for vectors.
¿aren't those packages using homogeneous coordinates?
In which case the representations [xw, yw, zw, w] with w \neq 0, are equivalent to [x, y, z, 1]
and [x, y, z, 0] is a point at infinity

> However, this scheme uses considerably more memory (33% more in the case of 3D)
> with little real world benefit.
It allows to represent a translation transformations as a matrix. and combine it with other transformations like rotation.
Also, NURBS

> every motion in 3d space can be decomposed by a single translation operation
> together with rotation about the axis of translation
¿what's the "axis of translation"? ¿could you please show an example?
Consider http://goanna.cs.rmit.edu.au/~gl/teaching/Interactive3D/2012/images/translate-rotate.png
it is easy to decompose in a translation and a rotation, but the rotation is around the z axis (unrelated to the translation)
Last edited on
@Tition: I want to apologize for my rudeness and tone. You are much more advanced than me in knowledge and understanding of math. I am just going by what has been taught to me and what is taught by my sources. Apparently there are differences in definitions between regions I was unaware of. And I don't think that a Calc 3 lecturer is a lowly thing at all.
@ne555
every motion in 3d space can be decomposed by a single translation operation
together with rotation about the axis of translation


Argh, this is wrong my bad!!!! The correct statement is:

every motion in 3d space can be decomposed by a single translation operation
together with rotation about an axis parallel to the translation
.

The axis around which you rotate does not have to pass through the object!
Just to clarify: the statement is completely 3-dimensional. In the picture you gave, the rotation that realizes the transformation in question rotates the object out of the 2-dimensional plane in which it is drawn.

I am a bit rusty on my mechanics! I may have to look up the books a bit ... I forgot if the axis of rotation was allowed to be an arbitrary axis parallel to the translation.

@htirwin no worries mate. Just don't forget to put under suspicion everything you read (and that includes not only what I say, but also the words of your own instructors). Just to fuel such a healthy suspicion, my c++ math library has no class "point". If you want to use my code (downloadable on sourceforge), you'd be forced to use my conventions/definitions.
Last edited on
Just to clarify: the statement is completely 3-dimensional. In the picture you gave, the rotation that realizes the transformation in question corresponds to rotation which rotates the object out of the 2-dimensional plane in which it is drawn.
What? That doesn't clarify anything!

If move a step forward and then turn left, how exactly do you represent that with a rotation along a forward-parallel axis?
@helios: my bad, the statement you quoted was wrong (now it's crossed out). The correct statement is:


every motion in 3d space can be decomposed by a single translation operation
together with rotation about an axis parallel to the translation. The axis does not have to pass through the origin.


I will make a set of slides explaining the story (eventually), but I have no time now. Here's an explanation without any detail and pictures.

Let the starting object be o1 and the result of the motion be object o2. Translate o2 to an object o2' so that o1 and o2' have a common point. This means that to transform o1 to o2' you need a fixed point rotation (usual rotation). That is given by a 3x3 orthonormal matrix. Every real 3x3 matrix has a real eigenvector (why?), which gives you the direction of the axis of rotation. If you want to transform o1 to o2', the axis of rotation would pass through the fixed point selected by you. If you translate this axis around, so it doesn't pass through the point selected by you, this makes o1 transform to objects that are translates of o2 (and o2'). You need a small computation to find exactly where to put the axis (with already determined direction) so that you transform o1 to an object o1' so that the line connecting the fixed point on o1' and o2' is parallel to the axis of rotation. Now with a single rotation you've placed the two objects directly beneath one another relative to the direction of the rotation. All you are left to do is translate the objects along that line parallel to the axis of rotation.

In the case of a planar motion (the object and its image are two dimensional and lie in a common plane P) the axis of rotation always turns out to be perpendicular to the plane. When you execute the motion, the object never leaves the plane P, if the two objects have the same orientation within the plane P (if you wish, same orientation with respect to a normal vector to the plane). If the two objects have different orientations within P, the motion will have to exit the plane P. This illustrates the fact that that orientation -changing transformation in n dimensions can be given via an orientation-preserving motion in n+1 dimensions.
Last edited on
> every motion in 3d space can be decomposed by a single translation operation
> together with rotation about an axis parallel to the translation.
> The axis does not have to pass through the origin.
as you are allowing to move the rotation axis I think that the statement would be equivalent to
every motion in 3d space can be decomposed by a single translation operation together with rotation about an arbitrary axis that pass through the origin
I am allowing to make parallel translation of the rotation axis, not an arbitrary movement.
Pages: 1234