double moaftme_sample_int_censored(double tl, double tu, double mean, double sigma) { //plnorm args: x, mean, sigma, lowertail=TRUE, log=FALSE double Fl = plnorm(tl, mean, sigma, 1, 0); if (Fl > (1 - 1e-8)) { // tl is very large and both f(tl) and f(tu) are very small. // qlnorm would return Inf. We sample uniformly from [tl, tu]. return runif(tl, tu); } double Fu = plnorm(tu, mean, sigma, 1, 0); double Fw = runif(Fl, Fu); return qlnorm(Fw, mean, sigma, 1, 0); //Rprintf("i %f\n", w[i]); }
double moaftme_sample_right_censored(double tl, double mean, double sigma) { double Fl = plnorm(tl, mean, sigma, 1, 0); double Fw = runif(Fl, 1); double w = qlnorm(Fw, mean, sigma, 1, 0); // deal with case when lognorm is degenerate (eg very large sigma) if (!R_FINITE(w)) { return tl; } return w; }
/* char tmps[512]; sprintf(tmps, "%5.2f %5.2f %5.2f %5.2f", plCam.x, plCam.y, plCam.z, plCam.w ); MessageBoxA(NULL, tmps, tmps, MB_OK); */ void CGizmoTransformRotate::Draw() { if (m_pMatrix) { ComputeScreenFactor(); tvector3 right,up,frnt,dir; //glDisable(GL_DEPTH_TEST); tvector3 orig(m_pMatrix->GetTranslation()); tvector3 plnorm(m_CamSrc-orig); plnorm.Normalize(); tplane plCam = vector4(plnorm,0); dir = orig-m_CamSrc; dir.Normalize(); right.Cross(dir,GetTransformedVector(1)); right.Normalize(); up.Cross(dir,right); up.Normalize(); right.Cross(dir,up); right.Normalize(); tvector3 axeX(1,0,0),axeY(0,1,0),axeZ(0,0,1); if (mLocation == LOCATE_LOCAL) { axeX.TransformVector(*m_pMatrix); axeY.TransformVector(*m_pMatrix); axeZ.TransformVector(*m_pMatrix); axeX.Normalize(); axeY.Normalize(); axeZ.Normalize(); } // Twin if (mMask&AXIS_TRACKBALL) { if (m_RotateTypePredict != ROTATE_TWIN) DrawCircle(orig, 0.2f,0.2f,0.2f,right*GetScreenFactor(),up*GetScreenFactor()); else DrawCircle(orig, 1,1,1,right*GetScreenFactor(),up*GetScreenFactor()); } // Screen if (mMask&AXIS_SCREEN) { if (m_RotateTypePredict != ROTATE_SCREEN) DrawCircle(orig, 1.0f,0.3f,1.0f,up*1.2f*GetScreenFactor(),right*1.2f*GetScreenFactor()); else DrawCircle(orig, 1,1,1,up*1.2f*GetScreenFactor(),right*1.2f*GetScreenFactor()); } // X right.Cross(dir, axeX); right.Normalize(); frnt.Cross(right, axeX); frnt.Normalize(); if (mMask&AXIS_X) { if (m_RotateTypePredict != ROTATE_X) DrawCircleHalf(orig, 1,0,0,right*GetScreenFactor(),frnt*GetScreenFactor(),plCam); else DrawCircleHalf(orig, 1,1,1,right*GetScreenFactor(),frnt*GetScreenFactor(),plCam); } // Y right.Cross(dir, axeY); right.Normalize(); frnt.Cross(right, axeY); frnt.Normalize(); if (mMask&AXIS_Y) { if (m_RotateTypePredict != ROTATE_Y) DrawCircleHalf(orig, 0,1,0,right*GetScreenFactor(),frnt*GetScreenFactor(),plCam); else DrawCircleHalf(orig, 1,1,1,right*GetScreenFactor(),frnt*GetScreenFactor(),plCam); } // Z right.Cross(dir, axeZ); right.Normalize(); frnt.Cross(right, axeZ); frnt.Normalize(); if (mMask&AXIS_Z) { if (m_RotateTypePredict != ROTATE_Z) DrawCircleHalf(orig, 0,0,1,right*GetScreenFactor(),frnt*GetScreenFactor(),plCam); else DrawCircleHalf(orig, 1,1,1,right*GetScreenFactor(),frnt*GetScreenFactor(),plCam); } // camembert if ( (m_RotateType != ROTATE_NONE) && (m_RotateType != ROTATE_TWIN ) ) DrawCamem(orig,m_Vtx*GetScreenFactor(),m_Vty*GetScreenFactor(),-m_Ng2); /* // debug glPointSize(20); glBegin(GL_POINTS); glVertex3fv(&ptd.x); glEnd(); glEnable(GL_DEPTH_TEST); */ #if 0 #ifdef WIN32 GDD->GetD3D9Device()->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); GDD->GetD3D9Device()->SetRenderState(D3DRS_CULLMODE , D3DCULL_NONE ); GDD->GetD3D9Device()->SetRenderState(D3DRS_ZENABLE , D3DZB_TRUE); GDD->GetD3D9Device()->SetRenderState(D3DRS_ALPHATESTENABLE , FALSE); GDD->GetD3D9Device()->SetRenderState(D3DRS_ZWRITEENABLE , TRUE); #endif extern RenderingState_t GRenderingState; GRenderingState.mAlphaTestEnable = 0; GRenderingState.mZWriteEnable = 1; GRenderingState.mBlending = 0; GRenderingState.mCulling = 0; GRenderingState.mZTestType = 1; #endif } }
double F77_SUB(cdflnorm)(double *x, double *logmean, double *logsd, int *lower_tail, int *give_log) { return plnorm(*x, *logmean, *logsd, *lower_tail, *give_log); }