Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 06 Jul 2005
Offline Last Active Mar 26 2015 03:11 PM

Topics I've Started

Find vector normal to line segment

26 March 2015 - 12:52 PM

Hello folks, I googled around and I yet can't find a way to get this done.

Suppose I have a line segment going from (x1,y1,z1) to (x2,y2,z2). How do I calculate the normal vector perpendicular to this line?

Thanks for any help.

STL C++: iterator issue

31 July 2014 - 05:32 PM

Hi folks,


I'm trying to search a std::vector declared like this:

std::vector<MyItem*> myNodeContainer;

where MyItem is looking like this:

class MyItem :public QGraphicsItem
    MyItem(QString QwNodeType, QString iQwFamilyType);
    int testID;

Now, I've built a function to search the testID:

struct findNodeUUID2 {
	findNodeUUID2(int i) : id(i) { }
	bool operator()(const MyItem* &obj) { return (obj->testID==id); }
	int id;

and I try to search like this:

    std::vector<MyItem*>::iterator findNodeIterator;
    findNodeIterator=std::find_if(myNodeContainer.begin(),myNodeContainer.end(), findNodeUUID2(1234) );

Linker errors as follows:


stl_algo.h.... No matching function for call to object of type 'findNodeUUID2'


What am I doing wrong? I suppose I'm using pointers the wrong way? Thanks for any suggestion


Evaluating curve points

18 February 2013 - 05:31 PM

Hi folks, I'd like to ask help about evaluating curve points as displayed in the attached image.

I'm be able to discard points if the curve is straight, comparing angles between each vector segment (left part).


I'd like to ask how could I evaluate points so that I can build a spline that passes through initial points (blue ones), and adds a number of green points where needed so that I can get a curve instead of a segmented vector.



Vector dot product

13 January 2013 - 11:36 AM

I'm trying to use vector dot product to get the angle between two vectors, but I'm puzzled by the results.


Given two vectors, A and B:

A(0.0, 0.2, 0.0)
B(0.8, 0.0, 0.0)

The angle between those, calculated with the dot product:

alpha= (acos(A*B)) * RAD_TO_DEG

properly returns 90°.

Now, let's have two vectors pointing in the same direction:

A(0.2, 0.2, 0.0)
B(0.8, 0.8, 0.0)

Would you guys explain me why in this case alpha is equal to 9.9°, while I'd expect to return 0°? Thanks



"Preventing" collision detection

14 November 2012 - 05:27 PM

Hello folks, I've created a basic collision detection routine following this document: http://www.lighthouse3d.com/tutorials/maths/ray-triangle-intersection/

I'd like to monitor the distance from the point P and the triangle being tested for intersection, so that I can stop the routine when the distance falls below a certain value.

I tried modifying the 0.00001 values in the code thinking that it was meant to be a tolerance value for such collision "distance", but it seems to be ineffective.

What do you think? There is a way to do it? Here below is the routine derived from the document above:

int rayIntersectsTriangle(vector3_t orig, vector3_t dir, vector3_t v0, vector3_t v1, vector3_t v2) {
float a,f,u,v,t;
vector3_t e1= v1-v0;
vector3_t e2= v2-v0;
vector3_t h=dir^e2;
a = e1*h;  
if (a > -0.00001 && a < 0.00001) return(false);
f = 1.0/a;
vector3_t s=orig-v0;
u = f * (s*h);
if (u < 0.0 || u > 1.0)  return(false);
vector3_t q=s^e1;
v = f * (dir*q);  
if (v < 0.0 || u + v > 1.0)  return(false);
// at this stage we can compute t to find out where the intersection point is on the line
t = f * (e2*q);  
if (t > 0.00001) // ray intersection
else // this means that there is a line intersection
	    // but not a ray intersection
	    return (false);