[chronojump] kneeAngle: validation includes blackOnlyMarkers
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] kneeAngle: validation includes blackOnlyMarkers
- Date: Mon, 10 May 2010 12:10:46 +0000 (UTC)
commit 222a9a55173bb5695757833173759cded0cb9c11
Author: Xavier de Blas <xaviblas gmail com>
Date: Mon May 10 20:09:27 2010 +0800
kneeAngle: validation includes blackOnlyMarkers
src/angle/kneeAngle.cpp | 49 ++--
src/angle/kneeAngleFunctions.cpp | 20 +-
src/angle/kneeAngleGlobal.cpp | 3 +-
src/angle/kneeAngle_black.png | Bin 46137 -> 43408 bytes
src/angle/kneeAngle_black.svg | 161 +++++++++----
src/angle/kneeAngle_black_contour.png | Bin 47903 -> 45275 bytes
src/angle/kneeAngle_black_contour.svg | 145 +++++++----
src/angle/kneeAngle_intro.png | Bin 45833 -> 31642 bytes
src/angle/kneeAngle_intro.svg | 445 ++++++++++++++-------------------
src/angle/kneeAngle_skin.png | Bin 43586 -> 43645 bytes
src/angle/kneeAngle_skin.svg | 110 +++++----
11 files changed, 493 insertions(+), 440 deletions(-)
---
diff --git a/src/angle/kneeAngle.cpp b/src/angle/kneeAngle.cpp
index a632b8f..88122e5 100644
--- a/src/angle/kneeAngle.cpp
+++ b/src/angle/kneeAngle.cpp
@@ -78,6 +78,13 @@
/*
* COMPILATION:
*
+ * Ubuntu 9.10, now using RInside:
+ *
+ * g++ -I/usr/include/opencv -I/usr/share/R/include -I/usr/local/lib/R/site-library/Rcpp/lib -I/usr/local/lib/R/site-library/RInside/lib -g -O2 -Wall -s kneeAngle.cpp -o kneeAngle -L/usr/lib/R/lib -lR -lblas -llapack -L/usr/local/lib/R/site-library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/usr/local/lib/R/site-library/RInside/lib -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib -L/usr/lib -lhighgui -Wl,-rpath,/usr/lib
+ *
+ *
+ * OLD:
+ *
* g++ -lcv -lcxcore -lhighgui -L(path to opencv library) kneeAngle.cpp -o kneeAngle
*
* for example:
@@ -165,8 +172,8 @@ int main(int argc,char **argv)
if(argc < 2)
{
char *startMessage = new char[300];
- sprintf(startMessage, "\nkneeAngle HELP.\n\nProvide file location as a first argument...\nOptional: as 2nd argument provide a fraction of video to start at that frame, or a concrete frame.\nOptional: as 3rd argument provide mode you want to execute (avoiding main menu).\n\t%d: validation (don't use this, use blackOnlyMarkers); %d: blackWithoutMarkers; %d: skinOnlyMarkers; %d: blackOnlyMarkers.\n\nEg: Start at frame 5375:\n\tkneeAngle myfile.mov 5375\nEg:start at 80 percent of video and directly as blackOnlyMarkers:\n\tkneeAngle myFile.mov .8 %d\n\nNote another param can be used to default trhesholdLargestContour on blackOnly and on validation",
- validation, blackWithoutMarkers, skinOnlyMarkers, blackOnlyMarkers, blackOnlyMarkers);
+ sprintf(startMessage, "\nkneeAngle HELP.\n\nProvide file location as a first argument...\nOptional: as 2nd argument provide a fraction of video to start at that frame, or a concrete frame.\nOptional: as 3rd argument provide mode you want to execute (avoiding main menu).\n\t%d: validation; %d: blackWithoutMarkers; %d: skinOnlyMarkers.\n\nEg: Start at frame 5375:\n\tkneeAngle myfile.mov 5375\nEg:start at 80 percent of video and directly as blackWithoutMarkers:\n\tkneeAngle myFile.mov .8 %d\n\nNote another param can be used to default thresholdLargestContour on validation and blackWithoutMarkers",
+ validation, blackWithoutMarkers, skinOnlyMarkers, blackWithoutMarkers);
std::cout<< startMessage <<std::endl;
exit(1);
}
@@ -197,7 +204,7 @@ int main(int argc,char **argv)
ProgramMode = atoi(argv[3]);
int threshold;
- //this is currently only used on blackOnlyMarkers and validation to have a threshold to find the contour
+ //this is currently only used on validation and blackWithoutMarkers to have a threshold to find the contour
//(different than threshold for three points)
int thresholdLargestContour = -1;
int thresholdMax = 255;
@@ -238,7 +245,7 @@ int main(int argc,char **argv)
cvNamedWindow("gui",1);
//if ProgramMode is not defined or is invalid, ask user
- if(ProgramMode < validation || ProgramMode > blackOnlyMarkers) {
+ if(ProgramMode < validation || ProgramMode > skinOnlyMarkers) {
gui = cvLoadImage("kneeAngle_intro.png");
cvShowImage("gui", gui);
ProgramMode = menu(gui, font);
@@ -248,7 +255,7 @@ int main(int argc,char **argv)
UsingContour = false;
gui = cvLoadImage("kneeAngle_skin.png");
}
- else if(ProgramMode == blackOnlyMarkers || ProgramMode == validation) {
+ else if(ProgramMode == validation) {
UsingContour = true;
gui = cvLoadImage("kneeAngle_black_contour.png");
}
@@ -303,15 +310,10 @@ int main(int argc,char **argv)
// ----------------------------- create windows -----------------------------
- if(ProgramMode == validation) {
-// cvNamedWindow("Holes_on_contour",1);
-// cvNamedWindow("result",1);
- cvNamedWindow("threshold",1);
- } else if (ProgramMode == skinOnlyMarkers || ProgramMode == blackOnlyMarkers) {
- cvNamedWindow("threshold",1);
- }
- else if (ProgramMode == blackWithoutMarkers)
+ if (ProgramMode == blackWithoutMarkers)
cvNamedWindow("result",1);
+ else
+ cvNamedWindow("threshold",1);
// ----------------------------- define vars -------------------------------------------
@@ -448,7 +450,7 @@ int main(int argc,char **argv)
int verticalHeight;
- //ProgramMode == validation || ProgramMode == blackWithoutMarkers
+ //ProgramMode == validation
bool extensionDoIt = true;
bool extensionCopyDone = false;
CvPoint kneeMarkedAtExtension = pointToZero();
@@ -603,7 +605,7 @@ int main(int argc,char **argv)
cvCvtColor(frame_copy,gray,CV_BGR2GRAY);
threshold = calculateThresholdStart(gray, false);
}
- else if(ProgramMode == blackOnlyMarkers || ProgramMode == validation) {
+ else if(ProgramMode == validation) {
cvCvtColor(frame_copy,gray,CV_BGR2GRAY);
threshold = calculateThresholdStart(gray, false);
if(thresholdLargestContour == -1)
@@ -652,7 +654,7 @@ int main(int argc,char **argv)
*/
- if(ProgramMode == skinOnlyMarkers || ProgramMode == blackOnlyMarkers || ProgramMode == validation)
+ if(ProgramMode == skinOnlyMarkers || ProgramMode == validation)
{
/* kalman */
@@ -694,7 +696,7 @@ int main(int argc,char **argv)
seqHolesEnd = findHolesSkin(output, frame_copy,
hipMarked, kneeMarked, toeMarked, hipPredicted, kneePredicted, toePredicted, font);
}
- else { //if(ProgramMode == blackOnlyMarkers || ProgramMode == validation)
+ else {
//this segmented is to find the contour (threshold is lot little)
cvThreshold(gray,segmentedValidationHoles,thresholdLargestContour,thresholdMax,CV_THRESH_BINARY_INV);
cvThreshold(gray,segmented,thresholdLargestContour,thresholdMax,CV_THRESH_BINARY_INV);
@@ -745,9 +747,8 @@ int main(int argc,char **argv)
myKnee = *CV_GET_SEQ_ELEM( CvPoint, seqHolesEnd, 1);
myToe = *CV_GET_SEQ_ELEM( CvPoint, seqHolesEnd, 2 );
- //validation uses always black contour
- //but black only markers can change to skin related if has problems with the contour
- if( ProgramMode == validation || (! pointIsNull(myHip) && ! pointIsNull(myKnee) && ! pointIsNull(myToe))) {
+ //can change to skin related if has problems with the contour
+ if( ! pointIsNull(myHip) && ! pointIsNull(myKnee) && ! pointIsNull(myToe) ) {
cvCopy(segmentedValidationHoles, output);
if(! UsingContour) {
UsingContour = true;
@@ -859,7 +860,7 @@ int main(int argc,char **argv)
*/
- if(ProgramMode == skinOnlyMarkers || ProgramMode == blackOnlyMarkers || ProgramMode == validation)
+ if(ProgramMode == skinOnlyMarkers || ProgramMode == validation)
{
if(pointIsNull(hipMarked) || pointIsNull(kneeMarked) || pointIsNull(toeMarked))
thetaMarked = -1;
@@ -1837,8 +1838,7 @@ int main(int argc,char **argv)
MouseClicked = UNDEFINED;
MouseMultiplier = false;
- //if(ProgramMode == skinOnlyMarkers || ProgramMode == blackOnlyMarkers || ProgramMode == validation) {
- if(ProgramMode == skinOnlyMarkers || ProgramMode == blackOnlyMarkers) {
+ if(ProgramMode == skinOnlyMarkers || ProgramMode == validation) {
sprintf(label, "Threshold: %d (%d,%d,%d) (%d,%d,%d)",
threshold,
thresholdROIH, thresholdROIK, thresholdROIT,
@@ -1859,6 +1859,7 @@ int main(int argc,char **argv)
cvShowImage("threshold", output);
}
+ /*
else {
cvThreshold(gray,segmentedValidationHoles, threshold, thresholdMax,CV_THRESH_BINARY_INV);
//create the largest contour image (stored on temp)
@@ -1898,6 +1899,7 @@ int main(int argc,char **argv)
sprintf(label, "threshold: %d", threshold, thresholdROIH);
imageGuiResult(gui, label, font);
}
+ */
thresholdROIChanged = false;
}
@@ -2228,7 +2230,6 @@ int menu(IplImage * gui, CvFont font)
case '1': MouseClicked = validation; break;
case '2': MouseClicked = blackWithoutMarkers; break;
case '3': MouseClicked = skinOnlyMarkers; break;
- case '4': MouseClicked = blackOnlyMarkers; break;
}
} while (MouseClicked == undefined);
diff --git a/src/angle/kneeAngleFunctions.cpp b/src/angle/kneeAngleFunctions.cpp
index 8304f2d..8d52c1c 100644
--- a/src/angle/kneeAngleFunctions.cpp
+++ b/src/angle/kneeAngleFunctions.cpp
@@ -1316,10 +1316,9 @@ void on_mouse_gui_menu( int event, int x, int y, int flags, void* param )
CvPoint clicked;
clicked.x=x; clicked.y=y;
- CvRect rval; rval.x=45; rval.width=50; rval.y=60; rval.height=210;
- CvRect rbam; rbam.x=157; rbam.width=50; rbam.y=60; rbam.height=210;
- CvRect rsom; rsom.x=270; rsom.width=50; rsom.y=60; rsom.height=210;
- CvRect rbom; rbom.x=384; rbom.width=50; rbom.y=60; rbom.height=210;
+ CvRect rval; rval.x=45; rval.width=70; rval.y=60; rval.height=210;
+ CvRect rbwm; rbwm.x=200; rbwm.width=70; rbwm.y=60; rbwm.height=210;
+ CvRect rsom; rsom.x=360; rsom.width=70; rsom.y=60; rsom.height=210;
CvRect rquit; rquit.x=450; rquit.width=40; rquit.y=10; rquit.height=45;
switch( event ) {
@@ -1327,12 +1326,10 @@ void on_mouse_gui_menu( int event, int x, int y, int flags, void* param )
{
if(pointInsideRect(clicked, rval))
MouseClicked = validation;
- else if(pointInsideRect(clicked, rbam))
+ else if(pointInsideRect(clicked, rbwm))
MouseClicked = blackWithoutMarkers;
else if(pointInsideRect(clicked, rsom))
MouseClicked = skinOnlyMarkers;
- else if(pointInsideRect(clicked, rbom))
- MouseClicked = blackOnlyMarkers;
else if(pointInsideRect(clicked, rquit))
MouseClicked = quit;
}
@@ -1421,7 +1418,7 @@ void on_mouse_gui( int event, int x, int y, int flags, void* param )
success = false;
//blackOnlyMarkers with contour or validation
- if(!success && ( ProgramMode == validation || (ProgramMode == blackOnlyMarkers && UsingContour) )) {
+ if(!success && ( ProgramMode == validation && UsingContour) ) {
success = true;
if(pointInsideRect(clicked, rtglobalmore))
MouseClicked = TCONTOURMORE;
@@ -1433,8 +1430,7 @@ void on_mouse_gui( int event, int x, int y, int flags, void* param )
//skinOnlyMarkers || (blackOnlyMarkers without contour)
if(!success && (ProgramMode == skinOnlyMarkers ||
- ProgramMode == validation ||
- (ProgramMode == blackOnlyMarkers && !UsingContour))) {
+ (ProgramMode == validation && !UsingContour))) {
success = true;
if(pointInsideRect(clicked, rthipmore))
MouseClicked = THIPMORE;
@@ -1453,7 +1449,7 @@ void on_mouse_gui( int event, int x, int y, int flags, void* param )
}
if(!success && (ProgramMode == skinOnlyMarkers ||
- (ProgramMode == blackOnlyMarkers && !UsingContour))) {
+ (ProgramMode == validation && !UsingContour))) {
success = true;
if(pointInsideRect(clicked, rtglobalmore))
MouseClicked = TGLOBALMORE;
@@ -1477,7 +1473,7 @@ void on_mouse_gui( int event, int x, int y, int flags, void* param )
}
//only for blackOnlyMarkers without contour
- if(!success && (ProgramMode == blackOnlyMarkers && !UsingContour)) {
+ if(!success && (ProgramMode == validation && !UsingContour)) {
success = true;
if(pointInsideRect(clicked, rbackToContour)) {
MouseClicked = BACKTOCONTOUR;
diff --git a/src/angle/kneeAngleGlobal.cpp b/src/angle/kneeAngleGlobal.cpp
index 7e85437..bfcc8ac 100644
--- a/src/angle/kneeAngleGlobal.cpp
+++ b/src/angle/kneeAngleGlobal.cpp
@@ -57,10 +57,9 @@ enum { SMALL = 1, MID = 2, BIG = 3 };
* blackWithoutMarkers uses only black pants and finds the place where the markers should be
* (when validation study for lots of people isdone)
* skinOnlyMarkers uses markers to find three points and angle (easiest)
- * skinOnlyMarkers uses markers to find three points and angle but in pants (it uses findLargestContour and finds inside it)
*/
//NOTE: if this changes, change also in kneeangle.cpp menu
-enum { quit = -1, undefined = 0, validation = 1, blackWithoutMarkers = 2, skinOnlyMarkers = 3, blackOnlyMarkers = 4};
+enum { quit = -1, undefined = 0, validation = 1, blackWithoutMarkers = 2, skinOnlyMarkers = 3};
//used on gui
enum {
diff --git a/src/angle/kneeAngle_black.png b/src/angle/kneeAngle_black.png
index 74ffb68..96b145c 100644
Binary files a/src/angle/kneeAngle_black.png and b/src/angle/kneeAngle_black.png differ
diff --git a/src/angle/kneeAngle_black.svg b/src/angle/kneeAngle_black.svg
index 197f9cb..d6fb281 100644
--- a/src/angle/kneeAngle_black.svg
+++ b/src/angle/kneeAngle_black.svg
@@ -4552,6 +4552,13 @@
offset="1"
style="stop-color:#464744;stop-opacity:1" />
</linearGradient>
+ <inkscape:perspective
+ id="perspective9850"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
@@ -4563,16 +4570,16 @@
objecttolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:zoom="1.6392695"
+ inkscape:zoom="1.5171962"
inkscape:cx="250.99475"
- inkscape:cy="146.40149"
+ inkscape:cy="145.48645"
inkscape:document-units="px"
inkscape:current-layer="capa1"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1016"
- inkscape:window-height="711"
+ inkscape:window-height="704"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0">
@@ -4638,7 +4645,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -4776,51 +4783,6 @@
x="0.61669475"
y="220.44638"
transform="matrix(1,0,0,0.875,0,27.255967)" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 43.50129,69.963339 c -24.67163,21.111456 -6.28781,31.949661 0.81169,44.642851 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 C 78.47209,117.33821 63.97913,97.283885 59.73506,87.008795 l 4.87013,-17.045455 -21.1039,-10e-7 z"
- id="path3301"
- sodipodi:nodetypes="ccccccccc" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3303"
- width="5.681818"
- height="5.681818"
- x="46.712196"
- y="83.916183" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3305"
- width="5.681818"
- height="5.681818"
- x="61.426704"
- y="145.61188" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3307"
- width="5.681818"
- height="5.681818"
- x="54.080513"
- y="198.13712" />
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
- x="12.356018"
- y="237.07036"
- id="text15214"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan15216"
- x="12.356018"
- y="237.07036">FIND points</tspan><tspan
- sodipodi:role="line"
- x="12.356018"
- y="249.57036"
- id="tspan15218">on BLACK pants</tspan><tspan
- sodipodi:role="line"
- x="12.356018"
- y="262.07037"
- id="tspan15220">WITH markers</tspan></text>
<rect
style="opacity:0.78879311;fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient7392);stroke-width:1.37848151;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6224"
@@ -5896,5 +5858,106 @@
id="tspan9769-5"
sodipodi:role="line">Return to contour mode</tspan></text>
</g>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3303-0"
+ width="5.681818"
+ height="5.681818"
+ x="118.54699"
+ y="120.1102" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3305-8"
+ width="5.681818"
+ height="5.681818"
+ x="133.26151"
+ y="181.80589" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3305-2"
+ width="5.681818"
+ height="5.681818"
+ x="125.92066"
+ y="235.18355" />
+ <g
+ id="g13491"
+ transform="translate(-0.14499969,0)">
+ <text
+ id="text3319"
+ y="237.00839"
+ x="13.116875"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ xml:space="preserve"><tspan
+ y="237.00839"
+ x="13.116875"
+ id="tspan3321"
+ sodipodi:role="line">VALIDATE</tspan></text>
+ <g
+ transform="translate(-4,0)"
+ id="g13479">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3303"
+ width="5.681818"
+ height="5.681818"
+ x="46.712196"
+ y="83.916183" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3305"
+ width="5.681818"
+ height="5.681818"
+ x="61.426704"
+ y="145.61188" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3307"
+ width="5.681818"
+ height="5.681818"
+ x="54.080513"
+ y="198.13712" />
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:0.84253544;stroke-opacity:1"
+ id="rect3011"
+ width="44.286884"
+ height="139.10121"
+ x="17.726288"
+ y="69.374428" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 30.827348,69.533039 c -24.67163,21.111456 -6.28781,31.949661 0.81169,44.642851 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 11.657322,-61.1703 C 59.727451,115.62987 51.944209,101.96575 47.061118,86.578495 l 4.87013,-17.045455 -21.1039,-10e-7 z"
+ id="path3325"
+ sodipodi:nodetypes="ccccccccc" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3327"
+ width="5.681818"
+ height="5.681818"
+ x="34.069637"
+ y="83.725685" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3329"
+ width="5.681818"
+ height="5.681818"
+ x="50.223427"
+ y="143.92566" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3331"
+ width="5.681818"
+ height="5.681818"
+ x="41.437973"
+ y="197.94662" />
+ <path
+ style="fill:none;stroke:#ff0000;stroke-width:0.99391675px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 70.649592,208.70921 0,-63.3408"
+ id="path3870" />
+ <path
+ style="fill:#333333;stroke:#4a2121;stroke-width:0.36500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.73, 0.365;stroke-dashoffset:0"
+ d="m 61.623949,145.54657 8.54056,0"
+ id="path3870-9" />
+ </g>
+ </g>
</g>
</svg>
diff --git a/src/angle/kneeAngle_black_contour.png b/src/angle/kneeAngle_black_contour.png
index 0828d8a..dacbe00 100644
Binary files a/src/angle/kneeAngle_black_contour.png and b/src/angle/kneeAngle_black_contour.png differ
diff --git a/src/angle/kneeAngle_black_contour.svg b/src/angle/kneeAngle_black_contour.svg
index 1f763a4..8ad1413 100644
--- a/src/angle/kneeAngle_black_contour.svg
+++ b/src/angle/kneeAngle_black_contour.svg
@@ -5269,6 +5269,20 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective9779"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective9801"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
@@ -5280,16 +5294,16 @@
objecttolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:zoom="1.6601963"
+ inkscape:zoom="1.5520743"
inkscape:cx="250.99475"
- inkscape:cy="146.38995"
+ inkscape:cy="145.48645"
inkscape:document-units="px"
inkscape:current-layer="capa1"
showgrid="false"
showguides="false"
inkscape:guide-bbox="true"
- inkscape:window-width="1024"
- inkscape:window-height="717"
+ inkscape:window-width="1018"
+ inkscape:window-height="714"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1">
@@ -5741,44 +5755,6 @@
x="0.61669475"
y="220.44638"
transform="matrix(1,0,0,0.875,0,27.255967)" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 43.50129,69.963339 c -24.67163,21.111456 -6.28781,31.949661 0.81169,44.642851 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 C 78.47209,117.33821 63.97913,97.283885 59.73506,87.008795 l 4.87013,-17.045455 -21.1039,-10e-7 z"
- id="path3301"
- sodipodi:nodetypes="ccccccccc" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3303"
- width="5.681818"
- height="5.681818"
- x="46.712196"
- y="83.916183" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3305"
- width="5.681818"
- height="5.681818"
- x="61.426704"
- y="145.61188" />
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
- x="12.356018"
- y="237.07036"
- id="text15214"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan15216"
- x="12.356018"
- y="237.07036">FIND points</tspan><tspan
- sodipodi:role="line"
- x="12.356018"
- y="249.57036"
- id="tspan15218">on BLACK pants</tspan><tspan
- sodipodi:role="line"
- x="12.356018"
- y="262.07037"
- id="tspan15220">WITH markers</tspan></text>
<rect
style="opacity:0.78879311;fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient7392);stroke-width:1.37848151;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6224"
@@ -6266,13 +6242,6 @@
id="rect4668-6" /></flowRegion><flowPara
style="font-size:15.12978649000000075px;fill:#ffffff;stroke:#000000;stroke-width:0.09536439;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Chandas;-inkscape-font-specification:Chandas"
id="flowPara4670-1">Fast</flowPara></flowRoot> </g>
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3307"
- width="3.681818"
- height="3.681818"
- x="55.081001"
- y="200.13718" />
<g
id="g41169"
transform="translate(-1.9946289e-4,-7.3218317)">
@@ -6453,5 +6422,83 @@
y="213.71568"
style="font-size:9.50243378px;font-family:FreeMono;-inkscape-font-specification:FreeMono"
id="tspan3769-0">1: help (unimplemented)</tspan></text>
+ <g
+ id="g14555">
+ <text
+ id="text3319"
+ y="237.00873"
+ x="13.11687"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ xml:space="preserve"><tspan
+ y="237.00873"
+ x="13.11687"
+ id="tspan3321"
+ sodipodi:role="line">VALIDATE</tspan></text>
+ <g
+ id="g14543">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3303"
+ width="5.681818"
+ height="5.681818"
+ x="38.457184"
+ y="83.916183" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3305"
+ width="5.681818"
+ height="5.681818"
+ x="53.171692"
+ y="145.61188" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3305-2"
+ width="5.681818"
+ height="5.681818"
+ x="45.830856"
+ y="198.98952" />
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:0.84253544;stroke-opacity:1"
+ id="rect3011"
+ width="44.286884"
+ height="139.10121"
+ x="13.471268"
+ y="69.374763" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 26.572329,69.533379 c -24.6716304,21.111456 -6.28781,31.949661 0.81169,44.642851 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 11.657322,-61.1703 C 55.472432,115.63021 47.68919,101.96609 42.806099,86.578835 l 4.87013,-17.045455 -21.1039,-10e-7 z"
+ id="path3325"
+ sodipodi:nodetypes="ccccccccc" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3327"
+ width="5.681818"
+ height="5.681818"
+ x="29.814619"
+ y="83.726021" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3329"
+ width="5.681818"
+ height="5.681818"
+ x="45.96841"
+ y="143.92599" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3331"
+ width="5.681818"
+ height="5.681818"
+ x="37.182957"
+ y="197.94696" />
+ <path
+ style="fill:none;stroke:#ff0000;stroke-width:0.99391675px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 66.394573,208.70955 0,-63.3408"
+ id="path3870" />
+ <path
+ style="fill:#333333;stroke:#4a2121;stroke-width:0.36500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.73, 0.365;stroke-dashoffset:0"
+ d="m 57.36893,145.54691 8.54056,0"
+ id="path3870-9" />
+ </g>
+ </g>
</g>
</svg>
diff --git a/src/angle/kneeAngle_intro.png b/src/angle/kneeAngle_intro.png
index b9a50cd..6a823f0 100644
Binary files a/src/angle/kneeAngle_intro.png and b/src/angle/kneeAngle_intro.png differ
diff --git a/src/angle/kneeAngle_intro.svg b/src/angle/kneeAngle_intro.svg
index eb7e44a..8cb44bc 100644
--- a/src/angle/kneeAngle_intro.svg
+++ b/src/angle/kneeAngle_intro.svg
@@ -453,6 +453,34 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3856"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3882"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3904"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3958"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
@@ -464,18 +492,18 @@
objecttolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:zoom="0.86030083"
- inkscape:cx="232.58729"
- inkscape:cy="178.58586"
+ inkscape:zoom="1.4970643"
+ inkscape:cx="244.26639"
+ inkscape:cy="147.41425"
inkscape:document-units="px"
inkscape:current-layer="capa1"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1016"
- inkscape:window-height="711"
+ inkscape:window-height="704"
inkscape:window-x="0"
- inkscape:window-y="18"
+ inkscape:window-y="25"
inkscape:window-maximized="0">
<inkscape:grid
type="xygrid"
@@ -502,6 +530,22 @@
orientation="0,1"
position="67.895112,6.5201987"
id="guide18615" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="44.659294,85.786858"
+ id="guide3872" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="230.58778,153.11758"
+ id="guide3918" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="92.338498,212.79391"
+ id="guide3920" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="131.95778,98.728705"
+ id="guide3922" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -511,6 +555,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@@ -648,180 +693,121 @@
x="0.61669475"
y="220.44638"
transform="matrix(1,0,0,0.875,0,27.255967)" />
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
- x="42.858643"
- y="237.43869"
- id="text3319"><tspan
- sodipodi:role="line"
- id="tspan3321"
- x="42.858643"
- y="237.43869">VALIDATE</tspan></text>
- <g
- id="g15480"
- transform="translate(6.685086,2)">
- <path
- sodipodi:nodetypes="ccccccccc"
- id="path3325"
- d="m 53.88403,67.963339 c -24.67163,21.111456 -6.28781,31.949666 0.81169,44.642851 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 C 88.85483,115.33821 74.36187,95.283885 70.1178,85.008795 l 4.87013,-17.045455 -21.1039,-10e-7 z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <rect
- y="82.155983"
- x="57.12632"
- height="5.681818"
- width="5.681818"
- id="rect3327"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- <rect
- y="143.85168"
- x="71.840828"
- height="5.681818"
- width="5.681818"
- id="rect3329"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- <rect
- y="196.37692"
- x="64.494652"
- height="5.681818"
- width="5.681818"
- id="rect3331"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- <path
- sodipodi:nodetypes="cc"
- id="path3333"
- d="M 41.358311,88.716816 59.677904,85.285861"
- style="fill:#6c007e;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#EmptyTriangleInM);marker-end:url(#EmptyTriangleOutM)" />
- <path
- sodipodi:nodetypes="cc"
- id="path11829"
- d="m 66.758294,147.5566 16.345739,-2.06385"
- style="fill:#6c007e;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#EmptyTriangleInM);marker-end:url(#EmptyTriangleOutM)" />
- <path
- sodipodi:nodetypes="cc"
- id="path11831"
- d="m 60.632014,199.53359 13.65704,-0.30362"
- style="fill:#6c007e;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#EmptyTriangleInM);marker-end:url(#EmptyTriangleOutM)" />
- <path
- sodipodi:nodetypes="cc"
- id="path11833"
- d="M 41.927157,90.023971 66.360004,146.78505"
- style="fill:#6c007e;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#EmptyTriangleInM);marker-end:url(#EmptyTriangleOutM)" />
- <path
- sodipodi:nodetypes="cc"
- id="path11837"
- d="m 66.850422,147.86476 -6.368547,51.3532"
- style="fill:#6c007e;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#EmptyTriangleInM);marker-end:url(#EmptyTriangleOutM)" />
- </g>
<g
- id="g3313"
- transform="translate(-119.26556,-0.161616)">
- <path
- sodipodi:nodetypes="ccccccccc"
- id="path3301"
- d="m 405.87671,70.124955 c -24.67163,21.111456 -6.28781,31.949665 0.81169,44.642855 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 c 6.5617,-30.54721 -7.93126,-50.601539 -12.17533,-60.876629 l 4.87013,-17.045455 -21.1039,-10e-7 z"
- style="fill:#efa698;fill-opacity:1;fill-rule:evenodd;stroke:#efa698;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <rect
- y="84.077797"
- x="409.08762"
- height="5.681818"
- width="5.681818"
- id="rect3303"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- <rect
- y="145.7735"
- x="423.80212"
- height="5.681818"
- width="5.681818"
- id="rect3305"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- <rect
- y="198.29874"
- x="416.45593"
- height="5.681818"
- width="5.681818"
- id="rect3307"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ id="g11702">
+ <g
+ transform="translate(-7.6293945e-6,0)"
+ id="g4019">
+ <path
+ style="fill:#efa698;fill-opacity:1;fill-rule:evenodd;stroke:#efa698;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 387.05851,69.962993 c -24.67163,21.111456 -6.28781,31.949667 0.81169,44.642857 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21182 -4.30248,38.55248 -7.3052,56.81817 l 12.98703,-0.81169 11.65732,-61.17029 c -1.42606,-29.90819 -9.2093,-43.57231 -14.09239,-58.959571 l 4.87013,-17.045455 -21.1039,-10e-7 z"
+ id="path3325-5-6"
+ sodipodi:nodetypes="ccccccccc" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3303"
+ width="5.681818"
+ height="5.681818"
+ x="389.82205"
+ y="83.916183" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3305"
+ width="5.681818"
+ height="5.681818"
+ x="407.03201"
+ y="144.35619" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3307"
+ width="5.681818"
+ height="5.681818"
+ x="397.19037"
+ y="198.13712" />
+ </g>
+ <text
+ sodipodi:linespacing="125%"
+ id="text15214"
+ y="237.07036"
+ x="395.46588"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
+ xml:space="preserve"><tspan
+ y="237.07036"
+ x="395.46588"
+ id="tspan15216"
+ sodipodi:role="line">FIND points</tspan><tspan
+ id="tspan15218"
+ y="249.57036"
+ x="395.46588"
+ sodipodi:role="line">on SKIN</tspan><tspan
+ id="tspan15220"
+ y="262.07037"
+ x="395.46588"
+ sodipodi:role="line">WITH markers</tspan></text>
</g>
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
- x="295.46588"
- y="237.07036"
- id="text15214"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan15216"
- x="295.46588"
- y="237.07036">FIND points</tspan><tspan
- sodipodi:role="line"
- x="295.46588"
- y="249.57036"
- id="tspan15218">on SKIN</tspan><tspan
- sodipodi:role="line"
- x="295.46588"
- y="262.07037"
- id="tspan15220">WITH markers</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
- x="182.44485"
- y="235.72824"
- id="text11839"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan11841"
- x="184.94485"
- y="235.72824">FIND points </tspan><tspan
- sodipodi:role="line"
- x="182.44485"
- y="248.22824"
- id="tspan15202">on BLACK pants</tspan><tspan
- sodipodi:role="line"
- x="182.44485"
- y="260.72824"
- id="tspan15204">WITHOUT markers</tspan></text>
<g
- id="g18690"
- transform="translate(-1.4996447,0)">
- <path
- sodipodi:nodetypes="ccccccccc"
- id="path12428"
- d="m 175.08978,69.963339 c -24.67163,21.111456 -6.28781,31.949661 0.81169,44.642851 6.17596,14.0223 13.76709,30.27143 12.17532,36.52599 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 c 6.5617,-30.54721 -7.93126,-50.601545 -12.17533,-60.876635 l 4.87013,-17.045455 -21.1039,-10e-7 z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ id="g4005"
+ transform="translate(48.757637,0)">
<text
- id="text18678"
- y="92.086555"
- x="178.08093"
- style="font-size:12.69473648px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ sodipodi:linespacing="125%"
+ id="text11839"
+ y="235.72824"
+ x="182.44485"
+ style="font-size:10px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
xml:space="preserve"><tspan
- style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Chandas Bold"
+ y="235.72824"
+ x="184.94485"
+ id="tspan11841"
+ sodipodi:role="line">FIND points </tspan><tspan
+ id="tspan15202"
+ y="248.22824"
+ x="182.44485"
+ sodipodi:role="line">on BLACK pants</tspan><tspan
+ id="tspan15204"
+ y="260.72824"
+ x="182.44485"
+ sodipodi:role="line">WITHOUT markers</tspan></text>
+ <g
+ id="g3996">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 172.86932,69.962988 c -24.67163,21.111456 -6.28781,31.949662 0.81169,44.642852 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 11.65732,-61.1703 c -1.42606,-29.90819 -9.2093,-43.57231 -14.09239,-58.959566 l 4.87013,-17.045455 -21.1039,-10e-7 z"
+ id="path3325-5"
+ sodipodi:nodetypes="ccccccccc" />
+ <text
+ xml:space="preserve"
+ style="font-size:12.69473648px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ x="176.58128"
y="92.086555"
- x="178.08093"
- id="tspan18680"
- sodipodi:role="line">?</tspan></text>
- <text
- id="text18682"
- y="153.72337"
- x="192.58727"
- style="font-size:12.69473648px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
- xml:space="preserve"><tspan
- style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Chandas Bold"
- y="153.72337"
- x="192.58727"
- id="tspan18684"
- sodipodi:role="line">?</tspan></text>
- <text
- id="text18686"
- y="205.70451"
- x="185.35994"
- style="font-size:12.69473648px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
- xml:space="preserve"><tspan
- style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Chandas Bold"
+ id="text18678"><tspan
+ sodipodi:role="line"
+ id="tspan18680"
+ x="176.58128"
+ y="92.086555"
+ style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Chandas Bold">?</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12.69473648px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ x="192.04614"
+ y="152.44533"
+ id="text18682"><tspan
+ sodipodi:role="line"
+ id="tspan18684"
+ x="192.04614"
+ y="152.44533"
+ style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Chandas Bold">?</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12.69473648px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ x="183.86029"
y="205.70451"
- x="185.35994"
- id="tspan18688"
- sodipodi:role="line">?</tspan></text>
+ id="text18686"><tspan
+ sodipodi:role="line"
+ id="tspan18688"
+ x="183.86029"
+ y="205.70451"
+ style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Chandas Bold">?</tspan></text>
+ </g>
</g>
<g
id="g10086"
@@ -932,102 +918,59 @@
sodipodi:role="line">Exit</tspan></text>
</g>
<g
- id="g3853"
- transform="translate(455.40525,7.9606801)">
+ id="g3985"
+ transform="translate(4,0)">
+ <text
+ id="text3319"
+ y="237.43869"
+ x="42.858643"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas"
+ xml:space="preserve"><tspan
+ y="237.43869"
+ x="42.858643"
+ id="tspan3321"
+ sodipodi:role="line">VALIDATE</tspan></text>
+ <rect
+ y="69.804726"
+ x="47.468056"
+ height="139.10121"
+ width="44.286884"
+ id="rect3011"
+ style="fill:none;stroke:#ff0000;stroke-width:0.84253544;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccccc"
- id="path3301-8"
- d="m -55.77308,62.002657 c -24.67163,21.111456 -6.28781,31.949665 0.81169,44.642853 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 c 6.5617,-30.54721 -7.93126,-50.601537 -12.17533,-60.876627 l 4.87013,-17.045455 -21.1039,-10e-7 z"
+ id="path3325"
+ d="m 60.569116,69.963339 c -24.67163,21.111456 -6.28781,31.949661 0.81169,44.642851 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 11.657322,-61.1703 C 89.469219,116.06017 81.685977,102.39605 76.802886,87.008795 l 4.87013,-17.045455 -21.1039,-10e-7 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
- y="75.955498"
- x="-52.562176"
+ y="84.155983"
+ x="63.811405"
height="5.681818"
width="5.681818"
- id="rect3303-6"
+ id="rect3327"
style="fill:#ffffff;fill-opacity:1;stroke:none" />
<rect
- y="137.6512"
- x="-37.847668"
+ y="144.35596"
+ x="79.965195"
height="5.681818"
width="5.681818"
- id="rect3305-2"
+ id="rect3329"
style="fill:#ffffff;fill-opacity:1;stroke:none" />
<rect
- y="190.17644"
- x="-45.193859"
+ y="198.37692"
+ x="71.179741"
height="5.681818"
width="5.681818"
- id="rect3307-8"
+ id="rect3331"
style="fill:#ffffff;fill-opacity:1;stroke:none" />
- </g>
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
- x="408.37946"
- y="237.07036"
- id="text15214-4"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan15216-7"
- x="408.37946"
- y="237.07036">FIND points</tspan><tspan
- sodipodi:role="line"
- x="408.37946"
- y="249.57036"
- id="tspan15218-2">on BLACK pants</tspan><tspan
- sodipodi:role="line"
- x="408.37946"
- y="262.07037"
- id="tspan15220-4">WITH markers</tspan></text>
- <g
- id="g3825"
- transform="translate(6,-16)">
<path
- id="path2975"
- d="M 28.450532,97.688578 122.58424,185.04657"
- style="fill:none;stroke:#ff0303;stroke-width:2.06655812;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ id="path3870"
+ d="m 100.39136,209.13951 0,-63.3408"
+ style="fill:none;stroke:#ff0000;stroke-width:0.99391675px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
- id="path2975-6"
- d="M 122.68438,96.86665 28.550676,184.22464"
- style="fill:none;stroke:#ff0303;stroke-width:2.06655812;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
- <g
- id="g4066">
- <rect
- y="174.24477"
- x="32.877186"
- height="46.028061"
- width="96.165771"
- id="rect3860"
- style="fill:#e9afaf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.29999995000000013;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <text
- id="text3319-5"
- y="182.40225"
- x="32.921394"
- style="font-size:10px;font-style:normal;font-weight:normal;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Chandas"
- xml:space="preserve"><tspan
- y="182.40225"
- x="32.921394"
- id="tspan3321-5"
- sodipodi:role="line">Don't use,</tspan><tspan
- id="tspan3854"
- y="194.90225"
- x="32.921394"
- sodipodi:role="line">use this</tspan><tspan
- id="tspan3856"
- y="207.40225"
- x="32.921394"
- sodipodi:role="line">it manages better</tspan><tspan
- id="tspan3858"
- y="219.90225"
- x="32.921394"
- sodipodi:role="line">contour and holes</tspan></text>
+ id="path3870-9"
+ d="m 91.365717,145.97687 8.54056,0"
+ style="fill:#333333;stroke:#4a2121;stroke-width:0.36500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:0.73, 0.365;stroke-dashoffset:0" />
</g>
- <path
- style="fill:none;stroke:#ff0000;stroke-width:2.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#EmptyTriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
- d="M 83.836827,190.68335 387.95081,158.62809"
- id="path3864"
- sodipodi:nodetypes="cc" />
</g>
</svg>
diff --git a/src/angle/kneeAngle_skin.png b/src/angle/kneeAngle_skin.png
index 984968b..05d2d84 100644
Binary files a/src/angle/kneeAngle_skin.png and b/src/angle/kneeAngle_skin.png differ
diff --git a/src/angle/kneeAngle_skin.svg b/src/angle/kneeAngle_skin.svg
index a868350..965589d 100644
--- a/src/angle/kneeAngle_skin.svg
+++ b/src/angle/kneeAngle_skin.svg
@@ -4512,6 +4512,13 @@
y1="158.41438"
x2="53.499996"
y2="142.05258" />
+ <inkscape:perspective
+ id="perspective5831"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
@@ -4523,16 +4530,16 @@
objecttolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:zoom="1.1591386"
+ inkscape:zoom="1.5171962"
inkscape:cx="250.99475"
- inkscape:cy="146.78051"
+ inkscape:cy="145.48645"
inkscape:document-units="px"
inkscape:current-layer="capa1"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1016"
- inkscape:window-height="711"
+ inkscape:window-height="704"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0">
@@ -4737,57 +4744,54 @@
y="220.44638"
transform="matrix(1,0,0,0.875,0,27.255967)" />
<g
- id="g3683">
- <g
- transform="translate(-362.37542,-0.161616)"
- id="g3313">
- <path
- style="fill:#efa698;fill-opacity:1;fill-rule:evenodd;stroke:#efa698;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 405.87671,70.124955 c -24.67163,21.111456 -6.28781,31.949665 0.81169,44.642855 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21183 -4.30248,38.55249 -7.3052,56.81818 l 12.98703,-0.81169 9.74026,-59.25324 c 6.5617,-30.54721 -7.93126,-50.601539 -12.17533,-60.876629 l 4.87013,-17.045455 -21.1039,-10e-7 z"
- id="path3301"
- sodipodi:nodetypes="ccccccccc" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3303"
- width="5.681818"
- height="5.681818"
- x="409.08762"
- y="84.077797" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3305"
- width="5.681818"
- height="5.681818"
- x="423.80212"
- y="145.7735" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3307"
- width="5.681818"
- height="5.681818"
- x="416.45593"
- y="198.29874" />
- </g>
- <text
- sodipodi:linespacing="125%"
- id="text15214"
- y="237.07036"
- x="12.356018"
- style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
- xml:space="preserve"><tspan
- y="237.07036"
- x="12.356018"
- id="tspan15216"
- sodipodi:role="line">FIND points</tspan><tspan
- id="tspan15218"
- y="249.57036"
- x="12.356018"
- sodipodi:role="line">on SKIN</tspan><tspan
- id="tspan15220"
- y="262.07037"
- x="12.356018"
- sodipodi:role="line">WITH markers</tspan></text>
+ id="g4019"
+ transform="translate(-361.05136,-0.246977)">
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path3325-5-6"
+ d="m 387.05851,69.962993 c -24.67163,21.111456 -6.28781,31.949667 0.81169,44.642857 6.17596,14.02229 13.76709,30.27142 12.17532,36.52598 -1.01347,28.21182 -4.30248,38.55248 -7.3052,56.81817 l 12.98703,-0.81169 11.65732,-61.17029 c -1.42606,-29.90819 -9.2093,-43.57231 -14.09239,-58.959571 l 4.87013,-17.045455 -21.1039,-10e-7 z"
+ style="fill:#efa698;fill-opacity:1;fill-rule:evenodd;stroke:#efa698;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ y="83.916183"
+ x="389.82205"
+ height="5.681818"
+ width="5.681818"
+ id="rect3303-5"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ y="144.35619"
+ x="407.03201"
+ height="5.681818"
+ width="5.681818"
+ id="rect3305-3"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ y="198.13712"
+ x="397.19037"
+ height="5.681818"
+ width="5.681818"
+ id="rect3307-9"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
</g>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Chandas;-inkscape-font-specification:Chandas"
+ x="12.356018"
+ y="237.07036"
+ id="text15214"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan15216"
+ x="12.356018"
+ y="237.07036">FIND points</tspan><tspan
+ sodipodi:role="line"
+ x="12.356018"
+ y="249.57036"
+ id="tspan15218">on SKIN</tspan><tspan
+ sodipodi:role="line"
+ x="12.356018"
+ y="262.07037"
+ id="tspan15220">WITH markers</tspan></text>
<rect
style="opacity:0.78879311;fill:#ffffff;fill-opacity:1;stroke:url(#linearGradient7392);stroke-width:1.37848151;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6224"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]