Jump to content

  • Log In with Google      Sign In   
  • Create Account

Alessandro

Member Since 06 Jul 2005
Offline Last Active Aug 26 2014 07:06 AM

Topics I've Started

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
{
public:
    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.

 

Thanks


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
  return(true);
else // this means that there is a line intersection
	    // but not a ray intersection
	    return (false);
}

Calculating angles of rotation

31 October 2012 - 04:45 PM

Given a XYZ coordinate system, and a vector AB as represented in the attached image (where A is matching the world center 0,0,0 ), how could I calculate the angles of rotation of AB along the 3 axis?
Meaning that if you start with AB at 0,1,0 I'd like to know what angle rotations have been applied to achieve its new position (which is known) in space.
To put it into numbers, if AB is at (0,1,0) and later you set it at (1,0.4,0.3), there is a way to calculate the angles that if forms within the x,y,z axis?

I don't know if the image are really explanatory, let me know if you need further info. Thanks for any help!

Posted Image

PARTNERS