Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

vectors

Domneth Dingson
Registered User
Join date: 20 Nov 2006
Posts: 126
07-31-2007 00:05
I remember reading a post on getting a vector to a string of a consistent length, but can't seem to find it now. I also seem to remember it being fairly simple, but basically it would report vectors always the same length, making it easier to pull information from them.


example: <130.46805, 117.92850, 699.74994>
would come out as: 130468051179285069974994

example 2: <0.00000, 117.92850, 699.74994>
would come out as: 000000001179285069974994


If I can find this info, I can use llGetSubString() to pull out the pieces of information relevant to my scripts.
Simnelia Petrichor
Registered User
Join date: 10 Feb 2006
Posts: 35
07-31-2007 04:01
With probable syntax errors, I imagine it would go something like this:

string float_to_string(float flt_param)
{
decimals_string = (string) (flt_param % 1.0);
digits_string = (string) ((integer) flt_param);

decimals_string = decimals_string + "00000";
decimals_string = llGetSubString(decimals_string, 0, 4);

digits_string = "000" + digits_string;
digits_string = llGetSubString(digits_string, -3, -1);

return digits_string + decimals_string;
}

string vector_to_string(vector vec_param)
{
string return_string

return_string = return_string + float_to_string(vec_param.x);
return_string = return_string + float_to_string(vec_param.y);
return_string = return_string + float_to_string(vec_param.z);

return return_string;
}
Domneth Dingson
Registered User
Join date: 20 Nov 2006
Posts: 126
07-31-2007 07:21
Thank you, Sim. I'll play around with it and see what I can do. ^^
Simnelia Petrichor
Registered User
Join date: 10 Feb 2006
Posts: 35
07-31-2007 07:56
Come to think of it, that decimals_string bit is nonsense for a start, because it will give you a string of "0.00001" instead of the desired "00001". Got to snip off the first 2 characters, eg

decimals_string = llGetSubString((string) (flt_param % 1.0),2,-1);

I knew I should have kept my mouth shut.
Shadow Subagja
Registered User
Join date: 29 Apr 2007
Posts: 354
07-31-2007 09:45
what is the benefit over typecasting? I can see there being a potential memory hit and/or performance hit, but to date I've not noticed anything significant in my scripts.
Simnelia Petrichor
Registered User
Join date: 10 Feb 2006
Posts: 35
07-31-2007 13:35
From: Simnelia Petrichor
With probable syntax errors, I imagine it would go something like this:

string float_to_string(float flt_param)
{
decimals_string = (string) (flt_param % 1.0);
digits_string = (string) ((integer) flt_param);

decimals_string = decimals_string + "00000";
decimals_string = llGetSubString(decimals_string, 0, 4);

digits_string = "000" + digits_string;
digits_string = llGetSubString(digits_string, -3, -1);

return digits_string + decimals_string;
}

string vector_to_string(vector vec_param)
{
string return_string

return_string = return_string + float_to_string(vec_param.x);
return_string = return_string + float_to_string(vec_param.y);
return_string = return_string + float_to_string(vec_param.z);

return return_string;
}

Lol. Well, that was awful. Here's a version which seems to work:

string float_to_string(float flt_param)
{
string decimals_string = llGetSubString((string) (flt_param - (integer) flt_param),2,-1);
string digits_string = (string) ((integer) flt_param);

decimals_string = decimals_string + "00000";
decimals_string = llGetSubString(decimals_string, 0, 4);

digits_string = "000" + digits_string;
digits_string = llGetSubString(digits_string, -3, -1);

return digits_string + decimals_string;
}

string vector_to_string(vector vec_param)
{
string return_string;

return_string = return_string + float_to_string(vec_param.x);
return_string = return_string + float_to_string(vec_param.y);
return_string = return_string + float_to_string(vec_param.z);

return return_string;
}