From: D M G. <dm...@uv...> - 2010-01-08 09:56:54
|
Hi Tom, The code looks good. I have tested the same input hFOV with panini, panini_general and equirectangular and they all give the same, which is good. I had to reformat the entire code because I could not easily read it (I find compact if-elses very had to read). My only concern is the use of the static variable in check_panini_general: We cannot have static variables in these functions. It will make the code non-reentrant. The MP structure is the place where these values should be kept. The variable "im->precomputedCount" is zero, it means that we these values have not been set. Use array precomputedVariables (size PANO_PROJECTION_PRECOMPUTED_VALUES --10 currently) to store anything that needs to be saved from one invocation to another: ---------------------------------------------------------------------- Image * check_panini_general(struct MakeParams* pmp) { // DMG We cannot have a static variables. // Makes the code non-reentrant XXXX static double oldparm[4] = {0, 0, 0, 0}; ---------------------------------------------------------------------- We can also store some of the repeated calculations in erect_panini_general in these fields (that is what they are for). See albersEqualAreaConic_ParamCheck for an example, but this is not really important, as this function is not called very frequently. -- -- Daniel M. German http://turingmachine.org/ http://silvernegative.com/ dmg (at) uvic (dot) ca replace (at) with @ and (dot) with . |