Norman Vine writes:
> another problem is in simgear / sky / cloud.cxx
>
> bool SGCloudLayer::reposition( sgVec3 p, sgVec3 up, double lon, double lat,
> double alt )
> {
> ....
> // now calculate update texture coordinates
> if ( last_lon < -900 ) {
> cout << "last_lon < -900" << endl;
> last_lon = lon;
> last_lat = lat;
> }
> // change if( lon - lat_lon != 0 || lat-last_lat != 0 ) to
> if ( fabs(lon-last_lon) > FLT_EPSILON || fabs(lat-last_lat) >
> FLT_EPSILON ) {
> ...
> }
Norman, can you provide any further information as to how this change
eliminates problems on the windows side?
I understand that in general with floating point compares you want to
test if the absolute value of the difference is < some epsilon,
however, in this case I think I'm justified with my code. The current
code is actually:
if ( lon != last_lon || lat != last_lat ) {
I think what I have is more likely to do what I intend than what you
indicate above to be the original code. If the position has changed
at all, we want to adjust the cloud texture coordinates. In this case
I do want to test for any inequality no matter how tiny. (i.e. I'm
*not* testing if some algorithm converges by seeing if last_value !=
value, nor am I testing if two vertices are identical in a
triangulator.)
But, if your change actually fixes a problem, I don't want to simply
ignore it because I don't understand it. But if that is the case I
really do not understand how or why or what was breaking. Could you
point me to the actual statement that was failing and indicate what
the relevant values were? I could just be missing something obvious.
Thanks,
Curt.
--
Curtis Olson Intelligent Vehicles Lab FlightGear Project
Twin Cities [EMAIL PROTECTED] [EMAIL PROTECTED]
Minnesota http://www.menet.umn.edu/~curt http://www.flightgear.org
_______________________________________________
Flightgear-devel mailing list
[EMAIL PROTECTED]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel