View Single Post
Old 05/02/2019, 09:26 PM   #14
Pottus
High-roller
 
Pottus's Avatar
 
Join Date: Jun 2012
Posts: 4,883
Reputation: 1321
Default Re: Need help with spatial geometry

Show me the values basepos[]

@Edit

I also noticed you are attaching objects to object to object etc.. that means you need to rotate the point several times! Using the result as the next point of reference and translating the offsets to the next position rotation. It sounds complicated but it's very easy.

Code:
// List of attached objects to the base we need to calculate sequentially in
// order to figure out the position of the last attached object
static Float:CraneOffsets[6][6] = {
	{ 0.000000,0.000000,-0.009999,-0.469999,0.000000,90.000000 },// cabine to base
	{ 0.000000,-2.069998,8.448098,0.000000,0.000000,0.000000 },// crane-arm (i think) to cabine
	{ 0.000000,36.869819,-0.569999,0.000000,0.000000,0.000000 },// cable to arm
	{ 0.000000, 0.000000,-7.440086,0.000000,0.000000,0.000000 },// magnet to cable
	{ 0.000000, 0.000000,7.440086,0.000000,0.000000,0.000000 }// suplimentary cable for "effect go-down"
};


FindCraneOffset()
{
	// Get the position of the cranebase (unless it doesn't change you can set this)
	new Float:ret[6];
	GetDynamicObjectPos(ret[0], ret[1], ret[2]);
	GetDynamicObjectRot(ret[3], ret[4], ret[5]);

	// The first return reference is of course the base!
	for(new i = 0; i < 6; i++)
	{
		// Loop through each offset and rotation calculate real world position
		AttachPoint(CraneOffsets[i][0], CraneOffsets[i][1], CraneOffsets[i][2], CraneOffsets[i][3], CraneOffsets[i][4], CraneOffsets[i][5],
		ret[0], ret[1], ret[2], ret[3], ret[4], ret[5],
		ret[0], ret[1], ret[2], ret[3], ret[4], ret[5]);
	}
	return 1;
}
Didn't test it but the idea is you start with the base it's position+rotation.
Now you need to calculate the real world position of the first object based on it's offsets and rotation.
Then the next based off the last...
etc...

Get it? Maybe? Sort of? You also might not have to do all the objects only up to where you need to but that is how it is done.

Last edited by Pottus; 05/02/2019 at 10:01 PM.
Pottus is offline   Reply With Quote