//----------------------------------------------------------------------- void Polyline::addKeyPoint( Real dis ) { size_t lastIndex = getKeyPointCount() - 1; PolylinePoint addPoint; PolylinePoint& priorPoint = getRefKeyPoint(lastIndex-1); PolylinePoint& currPoint = getRefKeyPoint(lastIndex); Vector3 addVec = currPoint.position - priorPoint.position; addVec.normalise(); addVec = addVec * dis; addPoint.position = currPoint.position + addVec; addKeyPoint( addPoint ); }
void TFGeometry1D::addKeyPoint( float position, float alpha) { TFGeometry1D::KeyPoint kp(position, cgt::col4(255)); cgt::col4 color(255); std::vector<TFGeometry1D::KeyPoint>::iterator lb = std::upper_bound(_keyPoints.begin(), _keyPoints.end(), kp); if (lb != _keyPoints.end()) { color = lb->_color; } else { color = _keyPoints.back()._color; } color.a = static_cast<uint8_t>(alpha * 255.f); addKeyPoint(position, color); }
//----------------------------------------------------------------------- void Polyline::insertKeyPoint( size_t index, Real lastDis ) { checkKeyPointIndexValid(index); if ( index != ( getKeyPointCount() - 1 ) ) { PolylinePoint insertPoint; PolylinePoint& currPoint = getRefKeyPoint(index); PolylinePoint& nextPoint = getRefKeyPoint(index+1); insertPoint.position = currPoint.position.midPoint(nextPoint.position); insertKeyPoint( insertPoint, index ); }else { addKeyPoint( lastDis ); } }
//----------------------------------------------------------------------- void Polyline::addKeyPoint( Vec3 pos ) { PolylinePoint point; point.position = MGEngineUtility::toVec3(pos); addKeyPoint( point ); }
void ViscontestDemo::init() { AutoEvaluationPipeline::init(); _horizontalSplitter.init(); _horizontalSplitter.s_onEvent.connect(this, &ViscontestDemo::onSplitterEvent); _tcp.p_image.setValue("ct.image"); _renderTargetID.setValue("ViscontestDemo"); _fiberReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/tumor.trk")); _fiberReader.p_scaling.setValue(cgt::vec3(100.f)); _fiberReader.p_outputId.setValue("fibers"); _fiberReader.p_outputId.addSharedProperty(&_fiberRenderer.p_strainId); _fiberRenderer.p_renderTargetID.setValue("fibres.rendered"); _fiberRenderer.p_renderTargetID.addSharedProperty(&_mvr.p_geometryImageId); _fiberRenderer.p_renderTargetID.addSharedProperty(&_rtc1.p_firstImageId); _t1PostReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/case1_T1_pre.mhd")); _t1PostReader.p_targetImageID.setValue("t1_pre.image"); _t1PostReader.p_targetImageID.addSharedProperty(&_mvmpr2D.p_sourceImage1); _t1PostReader.p_targetImageID.addSharedProperty(&_mvmpr3D.p_sourceImage1); _t1PostReader.p_targetImageID.addSharedProperty(&_mvr.p_sourceImage1); _t1PostReader.s_validated.connect(this, &ViscontestDemo::onReaderValidated); _t1PreReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/case1_T1_post.mhd")); _t1PreReader.p_targetImageID.setValue("t1_post.image"); _t1PreReader.p_targetImageID.addSharedProperty(&_mvmpr2D.p_sourceImage2); _t1PreReader.p_targetImageID.addSharedProperty(&_mvmpr3D.p_sourceImage2); _t1PreReader.p_targetImageID.addSharedProperty(&_mvr.p_sourceImage2); _t1PreReader.s_validated.connect(this, &ViscontestDemo::onReaderValidated); _flairReader.p_url.setValue(ShdrMgr.completePath("modules/neuro/sampledata/case1/case1_FLAIR.mhd")); _flairReader.p_targetImageID.setValue("flair.image"); _flairReader.p_targetImageID.addSharedProperty(&_mvmpr2D.p_sourceImage3); _flairReader.p_targetImageID.addSharedProperty(&_mvmpr3D.p_sourceImage3); _flairReader.p_targetImageID.addSharedProperty(&_mvr.p_sourceImage3); _flairReader.s_validated.connect(this, &ViscontestDemo::onReaderValidated); Geometry1DTransferFunction* t1_tf_rc = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .023f)); t1_tf_rc->addGeometry(TFGeometry1D::createQuad(cgt::vec2(.06f, .11f), cgt::col4(57, 57, 57, 32), cgt::col4(196, 196, 196, 16))); _mvr.p_transferFunction1.replaceTF(t1_tf_rc); Geometry1DTransferFunction* t1_tf_mpr = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .023f)); t1_tf_mpr->addGeometry(TFGeometry1D::createQuad(cgt::vec2(.06f, .4f), cgt::col4(57, 57, 57, 32), cgt::col4(196, 196, 196, 16))); _mvmpr2D.p_transferFunction1.replaceTF(t1_tf_mpr); _mvmpr3D.p_transferFunction1.replaceTF(t1_tf_mpr->clone()); Geometry1DTransferFunction* ct_tf = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .0421f)); ct_tf->addGeometry(TFGeometry1D::createQuad(cgt::vec2(.381f, .779f), cgt::col4(0, 100, 150, 128), cgt::col4(0, 192, 255, 172))); _mvmpr2D.p_transferFunction2.replaceTF(ct_tf); _mvmpr3D.p_transferFunction2.replaceTF(ct_tf->clone()); _mvr.p_transferFunction2.replaceTF(ct_tf->clone()); Geometry1DTransferFunction* flair_tf = new Geometry1DTransferFunction(128, cgt::vec2(0.f, .0193027f)); auto g = TFGeometry1D::createQuad(cgt::vec2(0.34f, 0.42f), cgt::col4(255, 255, 0, 80), cgt::col4(255, 32, 192, 128)); g->addKeyPoint(.9f, cgt::col4(255, 32, 192, 150)); flair_tf->addGeometry(g); _mvmpr2D.p_transferFunction3.replaceTF(flair_tf); _mvmpr3D.p_transferFunction3.replaceTF(flair_tf->clone()); _mvr.p_transferFunction3.replaceTF(flair_tf->clone()); _mvmpr2D.p_relativeToImageCenter.setValue(false); _mvmpr2D.p_use2DProjection.setValue(true); _mvmpr2D.p_planeSize.setValue(200.f); _mvmpr2D.p_showWireframe.setValue(false); _mvmpr2D.p_transparency.setValue(0.f); _mvmpr2D.p_outputImageId.setValue("result.mpr.2d"); _mvmpr2D.p_planeSize.addSharedProperty(&_mvmpr3D.p_planeSize); _mvmpr2D.p_planeDistance.addSharedProperty(&_mvmpr3D.p_planeDistance); _mvmpr2D.p_planeNormal.addSharedProperty(&_mvmpr3D.p_planeNormal); _mvmpr3D.p_relativeToImageCenter.setValue(false); _mvmpr3D.p_use2DProjection.setValue(false); _mvmpr3D.p_outputImageId.setValue("result.mpr.3d"); _mvmpr3D.p_showWireframe.setValue(true); _mvmpr3D.p_transparency.setValue(0.5f); _mvmpr3D.p_outputImageId.addSharedProperty(&_rtc2.p_firstImageId); _mvr.p_outputImageId.setValue("result.rc"); _mvr.p_outputImageId.addSharedProperty(&_rtc1.p_secondImageId); _mvr.p_samplingRate.setValue(1.f); _rtc1.p_compositingMethod.selectByOption(RenderTargetCompositor::CompositingModeDepth); _rtc1.p_targetImageId.setValue("composed1"); _rtc1.p_targetImageId.addSharedProperty(&_rtc2.p_secondImageId); _rtc2.p_compositingMethod.selectByOption(RenderTargetCompositor::CompositingModeDepth); _rtc2.p_targetImageId.setValue("composed"); }
//reads KeyPoints into keypoints vector from fileName given //format is: x1 y1 x2 y2 for each line in the file //where (x1,y1) are the input coordinates for a keypoint //and (x2,y2) are the output coordinates for a keypoint int Mapper::ReadKeyPointsFromFile(const char* fileName) { //open key points file ifstream keysIn(fileName); //if file did not open correctly return failure if(!keysIn) return -1; string lineInFile = ""; //each iteration of this loop reads a line from file with name //fileName and should contain four integers while(getline(keysIn,lineInFile)) { //create a new stringstream with each line stringstream lineStream(lineInFile); int inX,inY; std::vector<Coordinate> CoordinateVector; CoordinateVector.reserve(10); while(!(lineStream.fail() || lineStream.eof())) { //read int a coordinate at a time lineStream >> inX; lineStream >> inY; //make a coordinate from the ints Coordinate tempCo(inX,inY); CoordinateVector.push_back(tempCo); } if(lineStream.fail()) { lineStream.clear(); char tester; lineStream >> tester; if(!lineStream.fail()) return -1; //found a char in the KP file } //int to try a bad read on int ErrorTester; //if this read works the file format is bad //or reading is not working correctly lineStream >> ErrorTester; if(lineStream.fail() && lineStream.eof()); //no problems else return -1; //Check that the keyPoint has at least 3 coordinates //otherwise not valid if(CoordinateVector.size() < 3) return -1; //check if each size is the same as the first //create a keypoint with CoordinateVector KeyPoint temp(CoordinateVector); //store the keypoint in the mapper addKeyPoint(temp); }