28 #include "WMFiberTransform.h"
29 #include "WMFiberTransform.xpm"
30 #include "core/common/WPropertyHelper.h"
31 #include "core/dataHandler/io/WWriterFiberVTK.h"
56 return fiberTransform_xpm;
63 m_fiberInput = std::shared_ptr< FiberInputData >(
new FiberInputData( shared_from_this(),
"fiberInput",
"A loaded fiber dataset." ) );
66 m_output = std::shared_ptr< FiberOutputData >(
new FiberOutputData( shared_from_this(),
"fiberOutput",
"The transformed fibers." ) );
78 m_save =
m_properties->addProperty(
"Save result",
"If true the transformed fibers are saved to a file",
false );
79 m_savePath =
m_properties->addProperty(
"Save path",
"Where to save the result", boost::filesystem::path(
"/no/such/file" ) );
85 "Translation part of the transformation. You need to press enter to make the values effective.",
88 "Row 0 of matrix part of the transformation. You need to press enter to make the values effective.",
91 "Row 1 of matrix part of the transformation. You need to press enter to make the values effective.",
94 "Row 2 of matrix part of the transformation. You need to press enter to make the values effective.",
97 "Row 3 of matrix part of the transformation. You need to press enter to make the values effective.",
129 WAssert(
m_savePath,
"No save path property" );
130 if(
m_savePath->get().string() ==
"/no/such/file" )
148 bool save =
m_save->get();
149 boost::filesystem::path savePath =
m_savePath->get();
171 transformationMatrix( 3, 3 ) = 1.0;
173 std::shared_ptr< WProgress > progress(
new WProgress(
"Transforming", 4 + save ) );
176 infoLog() <<
"Start: WDataSetFibers => WDataSetFiberVector";
178 infoLog() <<
"Stop: WDataSetFibers => WDataSetFiberVector";
184 for( std::size_t fiberID = 0; fiberID < dataset->size(); ++fiberID )
186 WFiber& fiber = (*dataset)[fiberID];
187 for( std::size_t positionID = 0; positionID < fiber.
size(); ++positionID )
189 vec[0] = fiber[positionID][0];
190 vec[1] = fiber[positionID][1];
191 vec[2] = fiber[positionID][2];
193 vec_transformed = transformationMatrix * vec;
194 vec_transformed = ( 1.0 / vec_transformed[3] ) * vec_transformed;
195 fiber[positionID] =
WPosition( vec_transformed[0], vec_transformed[1], vec_transformed[2] );
200 infoLog() <<
"Start: WDataSetFibers <= WDataSetFiberVector";
201 m_output->updateData( dataset->toWDataSetFibers() );
202 infoLog() <<
"Stop: WDataSetFibers <= WDataSetFiberVector";
217 boost::filesystem::path fibFileName( dataFileName );
218 return fibFileName.replace_extension(
".transformed.fib" );
223 return std::string(
"Fiber Transform" );
230 return std::string(
"Transforms a fiber dataset" );
virtual void wait() const
Wait for the condition.
void setResetable(bool resetable=true, bool autoReset=true)
Sets the resetable flag.
virtual void add(std::shared_ptr< WCondition > condition)
Adds another condition to the set of conditions to wait for.
Class to encapsulate boost::condition_variable_any.
Represents a simple set of WFibers.
Represents a neural pathway.
size_type size() const
Wrapper around std::vector member function.
Class offering an instantiate-able data connection between modules.
Class representing a single module of OpenWalnut.
virtual void properties()
Initialize properties in this function.
void removeConnectors()
Removes all connectors properly.
void addConnector(std::shared_ptr< WModuleInputConnector > con)
Adds the specified connector to the list of inputs.
std::shared_ptr< WProperties > m_properties
The property object for the module.
void ready()
Call this whenever your module is ready and can react on property changes.
WConditionSet m_moduleState
The internal state of the module.
std::shared_ptr< WProgressCombiner > m_progress
Progress indicator used as parent for all progress' of this module.
wlog::WStreamedLogger infoLog() const
Logger instance for comfortable info logging.
virtual void connectors()
Initialize connectors in this function.
This only is a 3d double vector.
Class managing progress inside of modules.
WBoolFlag m_shutdownFlag
Condition getting fired whenever the thread should quit.
Base class for all higher level values like tensors, vectors, matrices and so on.
void writeFibs(std::shared_ptr< const WDataSetFiberVector > fiberDS) const
Writes a WDataSetFiberVector down to the previousely given file.
@ PV_TRIGGER_TRIGGERED
Trigger property: got triggered.
@ PV_TRIGGER_READY
Trigger property: is ready to be triggered (again)
void addTo(WPropSelection prop)
Add the PC_NOTEMPTY constraint to the property.