Fixed issue #626. Seam allowance bug on curves.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2017-02-10 20:10:30 +02:00
parent 6fd45d9e2c
commit a800a01308
6 changed files with 367 additions and 91 deletions

View File

@ -0,0 +1,173 @@
<?xml version='1.0' encoding='UTF-8'?>
<pattern>
<!--Pattern created with Valentina (http://www.valentina-project.org/).-->
<version>0.4.0</version>
<unit>cm</unit>
<author/>
<description/>
<notes/>
<measurements/>
<increments>
<increment name="#YokeLine" description="" formula="3.2"/>
<increment name="#CollarDepth" description="" formula="4"/>
<increment name="#HemIdentFront" description="" formula="3.5"/>
<increment name="#WaistEaseFront" description="" formula="2"/>
<increment name="#WaistEaseBack" description="" formula="3"/>
<increment name="#HemNarrowing" description="" formula="1.5"/>
<increment name="#CollarYokeJut" description="" formula="4.5"/>
<increment name="#BackCollarRounding" description="" formula="2"/>
<increment name="#CollarLateralEasing" description="" formula="0.3"/>
<increment name="#SlopeAdjustment" description="" formula="1"/>
<increment name="#ChestEaseFront" description="" formula="1.5"/>
<increment name="#ChestEaseBack" description="" formula="2.5"/>
<increment name="#ShoulderEase" description="" formula="2"/>
<increment name="#ScapulaEase" description="" formula="#ShoulderEase/2"/>
<increment name="#HemIdent" description="" formula="6"/>
<increment name="#ArmpitEase" description="" formula="7"/>
<increment name="#WaistLine" description="" formula="2"/>
<increment name="#CuffButton" description="" formula="1.25 "/>
<increment name="#CuffEase" description="" formula="3"/>
<increment name="#BigWatchEase" description="" formula="2"/>
<increment name="#SmallWatchEase" description="" formula="1"/>
<increment name="#SleeveLengthEase" description="" formula="4 "/>
<increment name="#SleeveFold" description="" formula="2"/>
<increment name="#PIQ" description="" formula="0.75"/>
</increments>
<draw name="collar">
<calculation>
<point type="single" x="-0.298129" y="-16.1555" id="1000703" name="O1" mx="1.36164" my="0.209928"/>
<point type="endLine" typeLine="none" id="1000704" name="O2" basePoint="1000703" mx="-9.60572" lineColor="blue" angle="0" my="1.47684" length="(19.256+11.4668+11.4668)/2"/>
<point type="endLine" typeLine="none" id="1000705" name="O3" basePoint="1000703" mx="2.56803" lineColor="blue" angle="0" my="0.214475" length="Line_O1_O2 + 3"/>
<point type="alongLine" typeLine="none" id="1000706" name="O4" firstPoint="1000703" secondPoint="1000704" mx="-3.40929" lineColor="black" my="-2.63592" length="Line_O1_O2*2/3"/>
<point type="endLine" typeLine="none" id="1000708" name="O12" basePoint="1000703" mx="-5.29549" lineColor="black" angle="90" my="-2.52057" length="0.3"/>
<point type="endLine" typeLine="none" id="1000717" name="O6" basePoint="1000703" mx="2.4801" lineColor="black" angle="90" my="-2.63106" length="#CollarDepth"/>
<point type="endLine" typeLine="none" id="1000721" name="O7" basePoint="1000717" mx="-3.76081" lineColor="black" angle="90" my="0.706981" length="Line_O1_O6"/>
<point type="normal" typeLine="none" id="1000722" name="K12" firstPoint="1000705" secondPoint="1000704" mx="4.01514" lineColor="black" angle="180" my="-1.49418" length="2.3"/>
<spline type="pathInteractive" id="1000723" color="black">
<pathPoint angle1="180" pSpline="1000708" angle2="0" length1="0" length2="5.62994"/>
<pathPoint angle1="179" pSpline="1000706" angle2="359" length1="1.78716" length2="7.39539"/>
<pathPoint angle1="210" pSpline="1000722" angle2="30" length1="1.05292" length2="0"/>
</spline>
<point type="normal" typeLine="none" id="1000724" name="K13" firstPoint="1000704" secondPoint="1000705" mx="6.37576" lineColor="black" angle="0" my="-3.5534" length="Line_O1_O6-1"/>
<point type="endLine" typeLine="none" id="1000725" name="K14" basePoint="1000724" mx="7.02485" lineColor="black" angle="180" my="-5.89503" length="0.6"/>
<spline point4="1000725" type="simpleInteractive" angle1="0" angle2="173" id="1000726" color="black" length1="8.01324" length2="8.01324" point1="1000717"/>
<point type="endLine" typeLine="none" id="1000728" name="K15" basePoint="1000725" mx="-7.80413" lineColor="black" angle="270" my="-3.82789" length="1"/>
<spline point4="1000728" type="simpleInteractive" angle1="0" angle2="160" id="1000729" color="black" length1="13.2689" length2="3.21669" point1="1000717"/>
<point type="cutSpline" id="1000730" name="K16" spline="1000729" mx="3.62347" my="-8.49816" length="Spl_O6_K14"/>
<point type="endLine" typeLine="hair" id="1000733" name="K17" basePoint="1000730" mx="0.0386031" lineColor="black" angle="95-((#CollarDepth-4)*5)" my="-1.5155" length="#CollarDepth+4"/>
<spline point4="1000733" type="simpleInteractive" angle1="0" angle2="210" id="1000734" color="black" length1="12.7318" length2="3.08649" point1="1000721"/>
<point type="endLine" typeLine="none" id="1000735" name="G1" basePoint="1000703" mx="-0.348152" lineColor="black" angle="180" my="-0.659347" length="Line_O1_O4"/>
<point type="alongLine" typeLine="none" id="1000736" name="G2" firstPoint="1000703" secondPoint="1000735" mx="0.00152676" lineColor="black" my="0.0684361" length="Line_O1_O2"/>
<point type="alongLine" typeLine="none" id="1000737" name="G3" firstPoint="1000703" secondPoint="1000735" mx="-6.60207" lineColor="black" my="-0.977679" length="Line_O1_O3"/>
<point type="normal" typeLine="none" id="1000738" name="G4" firstPoint="1000737" secondPoint="1000736" mx="-6.5367" lineColor="black" angle="0" my="-1.6315" length="Line_O3_K12"/>
<point type="normal" typeLine="none" id="1000739" name="G5" firstPoint="1000736" secondPoint="1000735" mx="-7.25594" lineColor="black" angle="0" my="-4.37754" length="Line_O2_K13"/>
<point type="endLine" typeLine="none" id="1000740" name="G6" basePoint="1000739" mx="-6.1444" lineColor="black" angle="0" my="-6.20825" length="Line_K13_K14"/>
<point type="endLine" typeLine="none" id="1000741" name="G7" basePoint="1000740" mx="-8.89045" lineColor="black" angle="270" my="-2.80838" length="Line_K14_K15"/>
<spline type="pathInteractive" id="1000742" color="black">
<pathPoint angle1="0" pSpline="1000708" angle2="180" length1="0" length2="5.60314"/>
<pathPoint angle1="1" pSpline="1000735" angle2="181" length1="1.81278" length2="7.39539"/>
<pathPoint angle1="330" pSpline="1000738" angle2="150" length1="1.045" length2="0"/>
</spline>
<spline point4="1000740" type="simpleInteractive" angle1="180" angle2="7" id="1000743" color="black" length1="8.01324" length2="8.01324" point1="1000717"/>
<spline point4="1000741" type="simpleInteractive" angle1="180" angle2="20" id="1000745" color="black" length1="13.2689" length2="3.21669" point1="1000717"/>
<point type="cutSpline" id="1000746" name="G8" spline="1000745" mx="-3.9214" my="-8.49663" length="Spl_O6_K14"/>
<point type="endLine" typeLine="hair" id="1000749" name="G9" basePoint="1000746" mx="0.132292" lineColor="black" angle="180-AngleLine_K16_K17" my="0.264583" length="Line_K16_K17"/>
<spline point4="1000749" type="simpleInteractive" angle1="180" angle2="330" id="1000750" color="black" length1="12.7318" length2="3.08649" point1="1000721"/>
<point type="cutSplinePath" id="1001041" name="PQ21b" mx="-3.41597" splinePath="1000723" my="4.10568" length="(19.256+11.4668+11.4668)/2"/>
<point type="cutSplinePath" id="1001044" name="Endpoint" mx="6.55958" splinePath="1000723" my="0.291557" length="(19.256+11.4668+11.4668)/2+1.5+0.25"/>
<spline point4="1001044" type="simpleInteractive" angle1="354.282" angle2="111.161" id="1001047" color="black" length1="1.88142" length2="0.800176" point1="1000725"/>
<point type="cutSplinePath" id="1001048" name="Endpoint2" mx="-4.45697" splinePath="1000742" my="4.96577" length="(19.256+11.4668+11.4668)/2+1.5+0.25"/>
<spline point4="1001048" type="simpleInteractive" angle1="186" angle2="69" id="1001051" color="black" length1="1.88689" length2="0.796687" point1="1000740"/>
<point type="cutSplinePath" id="1001210" name="PQ13c" mx="-2.25666" splinePath="1000723" my="3.18441" length="#PIQ"/>
<point type="cutSplinePath" id="1001213" name="PQ13a" mx="-1.17739" splinePath="1000742" my="4.60459" length="#PIQ"/>
<point type="cutSpline" id="1001216" name="PQ14a" spline="1000750" mx="-1.46034" my="-3.80548" length="#PIQ"/>
<point type="cutSpline" id="1001219" name="PQ14c" spline="1000734" mx="-2.5221" my="-3.80548" length="#PIQ"/>
<point type="cutSpline" id="1001222" name="PQ15c" spline="1000729" mx="-2.56634" my="1.10514" length="#PIQ"/>
<point type="cutSpline" id="1001225" name="PQ15a" spline="1000745" mx="-1.54882" my="1.10514" length="#PIQ"/>
<point type="cutSpline" id="1001228" name="PQ16a" spline="1000743" mx="-1.59306" my="-2.87644" length="#PIQ"/>
<point type="cutSpline" id="1001231" name="PQ16c" spline="1000726" mx="-2.61058" my="-2.87644" length="#PIQ"/>
<point type="cutSpline" id="1001234" name="PQ17a" spline="1000726" mx="-2.78754" my="-3.45156" length="Spl_O6_K14-2-#PIQ"/>
<point type="cutSpline" id="1001237" name="PQ17c" spline="1000726" mx="-3.76081" my="-3.58428" length="Spl_O6_K14-2+#PIQ"/>
<point type="cutSpline" id="1001240" name="PQ17b" spline="1000726" mx="-3.27418" my="-3.4958" length="Spl_O6_K14-2"/>
<point type="cutSpline" id="1001243" name="PQ18a" spline="1000729" mx="-7.46855" my="-5.03497" length="Spl_O6_K15-2-#PIQ"/>
<point type="cutSpline" id="1001246" name="PQ18c" spline="1000729" mx="-10.3153" my="-8.0789" length="Spl_O6_K15-2+#PIQ"/>
<point type="cutSpline" id="1001249" name="PQ18b" spline="1000729" mx="-10.7768" my="-10.5546" length="Spl_O6_K15-2"/>
<point type="cutSpline" id="1001252" name="PQ19c" spline="1000743" mx="-0.0889053" my="-3.18612" length="Spl_O6_G6-2-#PIQ"/>
<point type="cutSpline" id="1001255" name="PQ19a" spline="1000743" mx="0.928604" my="-3.36308" length="Spl_O6_G6-2+#PIQ"/>
<point type="cutSpline" id="1001258" name="PQ19b" spline="1000743" mx="0.441974" my="-3.2746" length="Spl_O6_G6-2"/>
<point type="cutSpline" id="1001261" name="PQ20c" spline="1000745" mx="1.90188" my="0.220344" length="Spl_O6_G7-2-#PIQ"/>
<point type="cutSpline" id="1001264" name="PQ20a" spline="1000745" mx="2.89011" my="-0.0585988" length="Spl_O6_G7-2+#PIQ"/>
<point type="cutSpline" id="1001267" name="PQ20b" spline="1000745" mx="2.39456" my="0.0706742" length="Spl_O6_G7-2"/>
<point type="cutSplinePath" id="1001270" name="PQ21c" mx="2.91924" splinePath="1000723" my="6.50338" length="(19.256+11.4668+11.4668)/2 + #PIQ"/>
<point type="cutSplinePath" id="1001273" name="PQ21a" mx="-4.56948" splinePath="1000723" my="5.91078" length="(19.256+11.4668+11.4668)/2 - #PIQ"/>
<point type="cutSplinePath" id="1001276" name="PQ22b" mx="0.751649" splinePath="1000742" my="2.87473" length="(19.256+11.4668+11.4668)/2"/>
<point type="cutSplinePath" id="1001279" name="PQ22c" mx="0.110644" splinePath="1000742" my="4.9824" length="(19.256+11.4668+11.4668)/2 - #PIQ"/>
<point type="cutSplinePath" id="1001282" name="PQ22a" mx="1.16318" splinePath="1000742" my="4.05715" length="(19.256+11.4668+11.4668)/2 + #PIQ"/>
<point type="cutSplinePath" id="1001375" name="PQ31a" mx="-0.499994" splinePath="1000723" my="6.05807" length="13.6957 - 19.256/2"/>
<point type="cutSplinePath" id="1001378" name="PQ31b" mx="-1.07218" splinePath="1000723" my="4.63625" length="14.4424 - 19.256/2"/>
<point type="cutSplinePath" id="1001381" name="PQ31c" mx="-1.63942" splinePath="1000723" my="3.34121" length="15.1943 - 19.256/2"/>
<point type="cutSplinePath" id="1001384" name="PQ32a" mx="-2.97397" splinePath="1000723" my="-3.28543" length="16.9019 - 19.256/2"/>
<point type="cutSplinePath" id="1001387" name="PQ32b" mx="-3.08141" splinePath="1000723" my="-3.74853" length="17.6527 - 19.256/2"/>
<point type="cutSplinePath" id="1001390" name="PQ32c" mx="-2.56808" splinePath="1000723" my="-3.71766" length="18.4045 - 19.256/2"/>
<point type="cutSplinePath" id="1001393" name="PQ33a" mx="-2.71341" splinePath="1000723" my="3.22116" length="11.4668 - 10.3135 + 19.256/2"/>
<point type="cutSplinePath" id="1001396" name="PQ33b" mx="-2.97775" splinePath="1000723" my="5.72191" length="11.4668 - 9.56001 + 19.256/2"/>
<point type="cutSplinePath" id="1001399" name="PQ33c" mx="-3.46427" splinePath="1000723" my="4.50567" length="11.4668 - 8.81535 + 19.256/2"/>
<point type="cutSplinePath" id="1001402" name="PQ34a" mx="-6.71681" splinePath="1000723" my="-0.644128" length="11.4668 - 6.48373 + 19.256/2"/>
<point type="cutSplinePath" id="1001405" name="PQ34b" mx="-8.93175" splinePath="1000723" my="0.513288" length="11.4668 - 5.74093 + 19.256/2"/>
<point type="cutSplinePath" id="1001408" name="PQ34c" mx="-8.70326" splinePath="1000723" my="-1.17302" length="11.4668 - 4.98568 + 19.256/2"/>
<point type="cutSplinePath" id="1001411" name="PQ35c" mx="-2.60254" splinePath="1000742" my="1.41026" length="19.256/2 - 5.56642"/>
<point type="cutSplinePath" id="1001414" name="PQ35b" mx="-2.3195" splinePath="1000742" my="4.09625" length="19.256/2 - 4.81958"/>
<point type="cutSplinePath" id="1001417" name="PQ35a" mx="-1.64165" splinePath="1000742" my="2.54649" length="19.256/2 - 4.06769"/>
<point type="cutSplinePath" id="1001420" name="PQ36c" mx="-3.08298" splinePath="1000742" my="-2.65504" length="19.256/2 - 2.35765"/>
<point type="cutSplinePath" id="1001423" name="PQ36b" mx="-1.68461" splinePath="1000742" my="-3.12301" length="19.256/2 - 1.60688"/>
<point type="cutSplinePath" id="1001426" name="PQ36a" mx="-3.05707" splinePath="1000742" my="-3.46593" length="19.256/2 - 0.855056"/>
<point type="cutSplinePath" id="1001429" name="PQ37a" mx="-1.19817" splinePath="1000742" my="2.03853" length="2.66375 + 19.256/2"/>
<point type="cutSplinePath" id="1001432" name="PQ37b" mx="-1.6847" splinePath="1000742" my="4.66277" length="1.91988 + 19.256/2"/>
<point type="cutSplinePath" id="1001435" name="PQ37c" mx="-2.19601" splinePath="1000742" my="3.40912" length="1.16728 + 19.256/2"/>
<point type="cutSplinePath" id="1001438" name="PQ38a" mx="-1.97427" splinePath="1000742" my="0.634155" length="6.49154 + 19.256/2"/>
<point type="cutSplinePath" id="1001441" name="PQ38b" mx="-2.73866" splinePath="1000742" my="0.171056" length="5.73631 + 19.256/2"/>
<point type="cutSplinePath" id="1001444" name="PQ38c" mx="-2.40371" splinePath="1000742" my="0.825651" length="4.9937 + 19.256/2"/>
<point type="normal" typeLine="hair" id="1002410" name="D11" firstPoint="1001405" secondPoint="1001408" mx="-5.09136" lineColor="blue" angle="0" my="-3.40908" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002411" name="D12" firstPoint="1001041" secondPoint="1001270" mx="0.78357" lineColor="black" angle="0" my="2.81434" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002446" name="D13" firstPoint="1001396" secondPoint="1001399" mx="0.463079" lineColor="black" angle="0" my="0.911123" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002447" name="D14" firstPoint="1001387" secondPoint="1001390" mx="-0.546923" lineColor="black" angle="0" my="-1.98918" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002448" name="D15" firstPoint="1001378" secondPoint="1001381" mx="-0.88653" lineColor="black" angle="0" my="1.71563" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002449" name="D16" firstPoint="1000708" secondPoint="1001210" mx="-0.948277" lineColor="black" angle="0" my="6.53188" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002450" name="D17" firstPoint="1001414" secondPoint="1001411" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002451" name="D18" firstPoint="1001423" secondPoint="1001420" mx="-0.94763" lineColor="black" angle="0" my="1.05653" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002452" name="D19" firstPoint="1001432" secondPoint="1001435" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002453" name="D20" firstPoint="1001441" secondPoint="1001444" mx="-0.51605" lineColor="black" angle="0" my="2.39485" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002454" name="D21" firstPoint="1001276" secondPoint="1001279" mx="1.89208" lineColor="black" angle="0" my="6.77887" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002455" name="D22" firstPoint="1001267" secondPoint="1001264" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002456" name="D23" firstPoint="1000717" secondPoint="1001228" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002457" name="D24" firstPoint="1001249" secondPoint="1001243" mx="-8.04996" lineColor="black" angle="0" my="-2.88057" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002458" name="D25" firstPoint="1001240" secondPoint="1001234" mx="-9.12281" lineColor="black" angle="0" my="-4.56349" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002459" name="D26" firstPoint="1001258" secondPoint="1001255" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002460" name="D27" firstPoint="1000717" secondPoint="1001231" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
<point type="normal" typeLine="hair" id="1002461" name="D28" firstPoint="1000721" secondPoint="1001216" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="#PIQ"/>
</calculation>
<modeling>
<point type="modeling" inUse="false" id="1002526" idObject="1001044" mx="2.43242" my="0.934251"/>
<spline type="modelingPath" inUse="false" id="1002527" idObject="1000723"/>
<point type="modeling" inUse="false" id="1002528" idObject="1001270" mx="2.27435" my="2.48326"/>
<point type="modeling" inUse="false" id="1002529" idObject="1002411" mx="0.139682" my="2.25889"/>
<point type="modeling" inUse="true" id="1002530" idObject="1001273" mx="-2.17557" my="3.5628"/>
<spline type="modelingPath" inUse="true" id="1002531" idObject="1000723"/>
<point type="modeling" inUse="false" id="1002532" idObject="1001408" mx="-2.62394" my="1.63852"/>
<point type="modeling" inUse="true" id="1002588" idObject="1000725" mx="0.664602" my="-3.27325"/>
</modeling>
<details>
<detail closed="1" id="1002590" name="Detail" forbidFlipping="true" united="false" seamAllowance="true" width="1" mx="2.609" inLayout="true" my="-4.50938" version="2">
<data rotation="0" letter="" fontSize="0" visible="true" mx="0" width="0" my="0" height="0"/>
<patternInfo rotation="0" fontSize="0" visible="true" mx="0" width="0" my="0" height="0"/>
<grainline arrows="0" rotation="90" visible="false" mx="0" my="0" length="0"/>
<nodes>
<node type="NodePoint" idObject="1002530"/>
<node type="NodeSplinePath" reverse="1" idObject="1002531"/>
<node type="NodePoint" idObject="1002588"/>
</nodes>
</detail>
</details>
<groups/>
</draw>
</pattern>

View File

@ -0,0 +1,119 @@
<?xml version='1.0' encoding='UTF-8'?>
<pattern>
<!--Pattern created with Valentina (http://www.valentina-project.org/).-->
<version>0.4.0</version>
<unit>cm</unit>
<author/>
<description/>
<notes/>
<measurements/>
<increments/>
<draw name="Front">
<calculation>
<point type="single" x="0" y="0" id="1" name="A" mx="0.132292" my="0.264583"/>
<point type="endLine" typeLine="none" id="2" name="Top_A" basePoint="1" mx="0.132292" lineColor="black" angle="90" my="0.264583" length="112"/>
<point type="endLine" typeLine="dotLine" id="3" name="A1" basePoint="1" mx="0.132292" lineColor="blue" angle="0" my="0.264583" length="155"/>
<line typeLine="dotLine" id="4" firstPoint="2" secondPoint="3" lineColor="blue"/>
<point type="alongLine" typeLine="none" id="31" name="A2" firstPoint="2" secondPoint="1" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="alongLine" typeLine="none" id="32" name="A3" firstPoint="2" secondPoint="3" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="alongLine" typeLine="none" id="33" name="A4" firstPoint="3" secondPoint="1" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="normal" typeLine="none" id="34" name="A5" firstPoint="33" secondPoint="3" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_A_A1/100*2"/>
<point type="normal" typeLine="none" id="35" name="A6" firstPoint="31" secondPoint="1" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_A_Top_A/100*2"/>
<point type="normal" typeLine="none" id="36" name="A7" firstPoint="32" secondPoint="2" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_Top_A_A1/100*2"/>
<spline point4="2" type="cubicBezier" id="37" color="black" point1="1" point2="35" point3="35"/>
<spline point4="3" type="cubicBezier" id="38" color="black" point1="2" point2="36" point3="36"/>
<spline point4="1" type="cubicBezier" id="39" color="black" point1="3" point2="34" point3="34"/>
<line typeLine="hair" id="47" firstPoint="2" secondPoint="1" lineColor="black"/>
<point type="cutSpline" id="67" name="A8" spline="38" mx="-3.36807" my="-0.191986" length="Spl_Top_A_A1/2"/>
<point type="cutSpline" id="81" name="A_plot_help_1" spline="39" mx="0.132292" my="0.264583" length=" 52"/>
<point type="cutSpline" id="82" name="A_plot_help_2" spline="39" mx="0.132292" my="0.264583" length="104"/>
<point type="cutSpline" id="85" name="A11" spline="38" mx="0.132292" my="0.264583" length="Spl_Top_A_A1/3"/>
<point type="cutSpline" id="86" name="A12" spline="38" mx="0.132292" my="0.264583" length="Spl_Top_A_A1/3*2"/>
<line typeLine="dotLine" id="87" firstPoint="85" secondPoint="82" lineColor="blue"/>
<line typeLine="dotLine" id="88" firstPoint="81" secondPoint="86" lineColor="blue"/>
</calculation>
<modeling>
<point type="modeling" inUse="false" id="89" idObject="1" mx="0.132292" my="0.264583"/>
<point type="modeling" inUse="false" id="90" idObject="2" mx="0.132292" my="0.264583"/>
<spline type="modelingSpline" inUse="false" id="91" idObject="38"/>
<point type="modeling" inUse="false" id="92" idObject="85" mx="0.132292" my="0.264583"/>
<point type="modeling" inUse="false" id="93" idObject="82" mx="-4.37354" my="1.52622"/>
<point type="modeling" inUse="false" id="95" idObject="82" mx="0.132292" my="0.264583"/>
<point type="modeling" inUse="false" id="96" idObject="85" mx="0.132292" my="0.264583"/>
<spline type="modelingSpline" inUse="false" id="97" idObject="38"/>
<point type="modeling" inUse="false" id="98" idObject="86" mx="0.132292" my="0.264583"/>
<point type="modeling" inUse="false" id="99" idObject="81" mx="0.132292" my="0.264583"/>
<point type="modeling" inUse="false" id="101" idObject="81" mx="0.132292" my="0.264583"/>
<point type="modeling" inUse="false" id="102" idObject="86" mx="0.132292" my="0.264583"/>
<spline type="modelingSpline" inUse="false" id="103" idObject="38"/>
<point type="modeling" inUse="false" id="104" idObject="3" mx="0.132292" my="0.264583"/>
</modeling>
<details/>
<groups/>
</draw>
<draw name="Side">
<calculation>
<point type="single" x="160" y="0" id="5" name="B" mx="0.132292" my="0.264583"/>
<point type="endLine" typeLine="none" id="6" name="TOP_B" basePoint="5" mx="0.132292" lineColor="black" angle="90" my="0.264583" length="Line_Top_A_A1"/>
<point type="endLine" typeLine="dotLine" id="7" name="B2" basePoint="5" mx="0.132292" lineColor="blue" angle="0" my="0.264583" length="90"/>
<line typeLine="dotLine" id="8" firstPoint="7" secondPoint="6" lineColor="blue"/>
<point type="alongLine" typeLine="none" id="22" name="B1" firstPoint="5" secondPoint="6" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="alongLine" typeLine="none" id="23" name="B3" firstPoint="6" secondPoint="7" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="alongLine" typeLine="none" id="24" name="B4" firstPoint="5" secondPoint="7" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="normal" typeLine="none" id="25" name="B5" firstPoint="24" secondPoint="7" mx="2.20218" lineColor="black" angle="0" my="-2.41409" length="Line_B_B2/100*2"/>
<point type="normal" typeLine="none" id="26" name="B6" firstPoint="22" secondPoint="5" mx="0.132292" lineColor="black" angle="0" my="0.36148" length="Line_A_Top_A/100*2"/>
<point type="normal" typeLine="none" id="27" name="B7" firstPoint="23" secondPoint="6" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_B2_TOP_B/100*2"/>
<spline point4="6" type="cubicBezier" id="28" color="black" point1="5" point2="26" point3="26"/>
<spline point4="7" type="cubicBezier" id="29" color="black" point1="6" point2="27" point3="27"/>
<spline point4="5" type="cubicBezier" id="30" color="black" point1="7" point2="25" point3="25"/>
<point type="cutSpline" id="106" name="B_plot_help_1" spline="30" mx="-6.13824" my="-4.60574" length="Spl_B2_B/2"/>
<point type="cutSpline" id="107" name="B_plot_help_2" spline="29" mx="0.132292" my="0.264583" length="Spl_TOP_B_B2/2"/>
<line typeLine="dotLine" id="108" firstPoint="106" secondPoint="107" lineColor="blue"/>
</calculation>
<modeling>
<point type="modeling" inUse="true" id="109" idObject="106" mx="0.132292" my="0.264583"/>
<spline type="modelingSpline" inUse="true" id="110" idObject="30"/>
<point type="modeling" inUse="true" id="111" idObject="5" mx="0.132292" my="0.264583"/>
<spline type="modelingSpline" inUse="false" id="112" idObject="28"/>
<point type="modeling" inUse="false" id="113" idObject="6" mx="0.132292" my="0.264583"/>
<spline type="modelingSpline" inUse="false" id="114" idObject="29"/>
<point type="modeling" inUse="true" id="115" idObject="107" mx="0.132292" my="0.264583"/>
</modeling>
<details>
<detail id="116" name="Side 1" forbidFlipping="false" united="false" seamAllowance="true" width="1.5" mx="-29.0568" inLayout="true" my="-29.5308" version="2">
<data rotation="0" letter="S1" fontSize="61" visible="true" mx="6588.72" width="363.59" my="-819.715" height="252.635">
<mcp cutNumber="2" userDef="sil Poly" material="4" placement="0"/>
</data>
<patternInfo rotation="0" fontSize="0" visible="false" mx="0" width="0" my="0" height="0"/>
<grainline arrows="0" rotation="90" visible="false" mx="0" my="0" length="0"/>
<nodes>
<node before="0" type="NodePoint" idObject="109"/>
<node type="NodeSpline" reverse="0" idObject="110"/>
<node type="NodePoint" idObject="111"/>
<node type="NodePoint" after="0" idObject="115"/>
</nodes>
</detail>
</details>
<groups/>
</draw>
<draw name="Bacl">
<calculation>
<point type="single" x="255" y="0" id="9" name="C" mx="0.132292" my="0.264583"/>
<point type="endLine" typeLine="none" id="10" name="C1" basePoint="9" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="153"/>
<point type="endLine" typeLine="none" id="11" name="Top_C" basePoint="9" mx="0.132292" lineColor="black" angle="59.4" my="0.264583" length="Line_B2_TOP_B"/>
<line typeLine="dotLine" id="12" firstPoint="10" secondPoint="11" lineColor="blue"/>
<point type="alongLine" typeLine="none" id="13" name="C2" firstPoint="10" secondPoint="11" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="alongLine" typeLine="none" id="14" name="C3" firstPoint="11" secondPoint="9" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="alongLine" typeLine="none" id="15" name="C4" firstPoint="9" secondPoint="10" mx="0.132292" lineColor="black" my="0.264583" length="CurrentLength/2"/>
<point type="normal" typeLine="none" id="16" name="C5" firstPoint="15" secondPoint="10" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_C_C1/100*2"/>
<point type="normal" typeLine="none" id="17" name="C6" firstPoint="14" secondPoint="9" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_C_Top_C/100*2"/>
<point type="normal" typeLine="none" id="18" name="C7" firstPoint="13" secondPoint="11" mx="0.132292" lineColor="black" angle="0" my="0.264583" length="Line_C1_Top_C/100*2"/>
<spline point4="11" type="cubicBezier" id="19" color="black" point1="9" point2="17" point3="17"/>
<spline point4="10" type="cubicBezier" id="20" color="black" point1="11" point2="18" point3="18"/>
<spline point4="9" type="cubicBezier" id="21" color="black" point1="10" point2="16" point3="16"/>
</calculation>
<modeling/>
<details/>
<groups/>
</draw>
</pattern>

View File

@ -40,7 +40,7 @@
#include "../ifc/ifcdef.h"
#include "vgobject_p.h"
const double VGObject::accuracyPointOnLine = (0.026/*mm*/ / 25.4) * PrintDPI;
const double VGObject::accuracyPointOnLine = (0.031/*mm*/ / 25.4) * PrintDPI;
//---------------------------------------------------------------------------------------------------------------------
/**
@ -457,14 +457,20 @@ bool VGObject::IsPointOnLineSegment(const QPointF &t, const QPointF &p1, const Q
// The test point must lie inside the bounding box spanned by the two line points.
if (not ( (p1.x() <= t.x() && t.x() <= p2.x()) || (p2.x() <= t.x() && t.x() <= p1.x()) ))
{
// test point not in x-range
return false;
if (not (qAbs(p1.x() - t.x()) <= accuracyPointOnLine) && not (qAbs(p2.x() - t.x()) <= accuracyPointOnLine))
{
// test point not in x-range
return false;
}
}
if (not ( (p1.y() <= t.y() && t.y() <= p2.y()) || (p2.y() <= t.y() && t.y() <= p1.y()) ))
{
// test point not in y-range
return false;
if (not (qAbs(p1.y() - t.y()) <= accuracyPointOnLine) && not (qAbs(p2.y() - t.y()) <= accuracyPointOnLine))
{
// test point not in y-range
return false;
}
}
// Test via the perp dot product (PDP)

View File

@ -37,83 +37,6 @@ TST_VAbstractCurve::TST_VAbstractCurve(QObject *parent)
{
}
//---------------------------------------------------------------------------------------------------------------------
void TST_VAbstractCurve::GetSegmentPoints_issue458()
{
// Real case. Issue #458. https://bitbucket.org/dismine/valentina/issues/458/issue-with-segment-of-curve
// See file AnalyzeStrangeIssueBug_isotated.val
QVector<QPointF> curve;
curve.append(QPointF(-11.267867716535433, -621.9401574803151));
curve.append(QPointF(28.929492484925593, -621.8607845421614));
curve.append(QPointF(111.02420124017556, -621.0204613872887));
curve.append(QPointF(192.81663506084445, -619.5641192834869));
curve.append(QPointF(271.7042817720716, -617.7160624366999));
curve.append(QPointF(380.07266406952584, -614.6790467524394));
curve.append(QPointF(489.18908873700275, -611.324295072277));
curve.append(QPointF(520.2546519685039, -610.6015748031497));
curve.append(QPointF(520.2546519685039, -610.6015748031497));
curve.append(QPointF(533.2501074340664, -610.4104062194663));
curve.append(QPointF(558.2116609090922, -610.3912171914401));
curve.append(QPointF(581.9682255886432, -610.7865804010944));
curve.append(QPointF(604.5534016414362, -611.572911926731));
curve.append(QPointF(626.0007892361873, -612.7266278466516));
curve.append(QPointF(646.343988541613, -614.224144239158));
curve.append(QPointF(665.6165997264297, -616.0418771825518));
curve.append(QPointF(683.8522229593539, -618.1562427551349));
curve.append(QPointF(701.0844584091014, -620.543657035209));
curve.append(QPointF(717.3469062443893, -623.1805361010756));
curve.append(QPointF(740.1064499883596, -627.5281982218287));
curve.append(QPointF(767.2158219967725, -634.0157380079388));
curve.append(QPointF(791.0508465842408, -641.0766263466508));
curve.append(QPointF(811.8803251004954, -648.5221918643786));
curve.append(QPointF(829.9730588952673, -656.1637631875356));
curve.append(QPointF(845.5978493182879, -663.8126689425358));
curve.append(QPointF(859.0234977192879, -671.2802377557932));
curve.append(QPointF(875.8174743129977, -681.8104925021551));
curve.append(QPointF(892.6995351796473, -693.3935519951781));
curve.append(QPointF(899.4017385826772, -697.5307086614174));
QPointF begin (541.621890489816, -610.374541985993);
QPointF end (660.2625170532651, -735.7793605757131);
const QVector<QPointF> points = VAbstractCurve::GetSegmentPoints(curve, begin, end, true);
QVector<QPointF> origPoints;
origPoints.append(QPointF(899.4017385826772, -697.5307086614174));
origPoints.append(QPointF(892.6995351796473, -693.3935519951781));
origPoints.append(QPointF(875.8174743129977, -681.8104925021551));
origPoints.append(QPointF(859.0234977192879, -671.2802377557932));
origPoints.append(QPointF(845.5978493182879, -663.8126689425358));
origPoints.append(QPointF(829.9730588952673, -656.1637631875356));
origPoints.append(QPointF(811.8803251004954, -648.5221918643786));
origPoints.append(QPointF(791.0508465842408, -641.0766263466508));
origPoints.append(QPointF(767.2158219967725, -634.0157380079388));
origPoints.append(QPointF(740.1064499883596, -627.5281982218287));
origPoints.append(QPointF(717.3469062443893, -623.1805361010756));
origPoints.append(QPointF(701.0844584091014, -620.543657035209));
origPoints.append(QPointF(683.8522229593539, -618.1562427551349));
origPoints.append(QPointF(665.6165997264297, -616.0418771825518));
origPoints.append(QPointF(646.343988541613, -614.224144239158));
origPoints.append(QPointF(626.0007892361873, -612.7266278466516));
origPoints.append(QPointF(604.5534016414362, -611.572911926731));
origPoints.append(QPointF(581.9682255886432, -610.7865804010944));
origPoints.append(QPointF(558.2116609090922, -610.3912171914401));
origPoints.append(QPointF(533.2501074340664, -610.4104062194663));
origPoints.append(QPointF(520.2546519685039, -610.6015748031497));
origPoints.append(QPointF(520.2546519685039, -610.6015748031497));
origPoints.append(QPointF(489.18908873700275, -611.324295072277));
origPoints.append(QPointF(380.07266406952584, -614.6790467524394));
origPoints.append(QPointF(271.7042817720716, -617.7160624366999));
origPoints.append(QPointF(192.81663506084445, -619.5641192834869));
origPoints.append(QPointF(111.02420124017556, -621.0204613872887));
origPoints.append(QPointF(28.929492484925593, -621.8607845421614));
origPoints.append(QPointF(-11.267867716535433, -621.9401574803151));
// Begin comparison
Comparison(points, origPoints);
}
//---------------------------------------------------------------------------------------------------------------------
void TST_VAbstractCurve::IsPointOnCurve_data() const
{
@ -121,7 +44,6 @@ void TST_VAbstractCurve::IsPointOnCurve_data() const
QTest::addColumn<QPointF>("point");
QTest::addColumn<bool>("expectedResult");
QVector<QPointF> points;
points << QPointF(714.5704733515146, 229.44783247230293);
points << QPointF(713.2432059361518, 236.799577781511);
@ -174,6 +96,68 @@ void TST_VAbstractCurve::IsPointOnCurve_data() const
// See file collection/bug/pointOnCurve.val
QTest::newRow("Point on curve") << points << point << true;
points.clear();
points << QPointF(9448.818897637795, 0.0);
points << QPointF(9143.208661417324, -12.224409448818896);
points << QPointF(8762.026328740158, -26.973425196850393);
points << QPointF(8540.29281496063, -34.94586614173228);
points << QPointF(8340.981791338583, -41.32381889763779);
points << QPointF(8159.110482283465, -46.107283464566926);
points << QPointF(7989.696112204724, -49.29625984251968);
points << QPointF(7867.929533710629, -50.59178149606299);
points << QPointF(7787.893700787402, -50.99040354330708);
points << QPointF(7708.169291338582, -50.99040354330708);
points << QPointF(7628.133458415356, -50.59178149606299);
points << QPointF(7506.36687992126, -49.29625984251968);
points << QPointF(7336.952509842519, -46.107283464566926);
points << QPointF(7155.081200787401, -41.32381889763779);
points << QPointF(6955.770177165354, -34.94586614173228);
points << QPointF(6734.036663385827, -26.973425196850393);
points << QPointF(6352.854330708662, -12.224409448818896);
points << QPointF(6047.244094488189, 0.0);
point = QPointF(7748.031496062632, -51.02362204724411);
// See file <root>/src/app/share/collection/bugs/Issue_#626.val
QTest::newRow("Issue #626") << points << point << true;
points.clear();
points << QPointF(-11.267867716535433, -621.9401574803151);
points << QPointF(28.929472497969787, -621.860784520479);
points << QPointF(111.02416803427747, -621.0204611542031);
points << QPointF(192.81661180303666, -619.5641187251658);
points << QPointF(271.70428169724175, -617.7160615368814);
points << QPointF(380.0727033074438, -614.6790454948614);
points << QPointF(489.1891345644603, -611.3242942049818);
points << QPointF(520.2546519685039, -610.6015748031497);
points << QPointF(520.2546519685039, -610.6015748031497);
points << QPointF(533.2501095340014, -610.4104061683322);
points << QPointF(558.2116665398979, -610.3912169130674);
points << QPointF(581.9682339950501, -610.7865797593487);
points << QPointF(604.5534121209836, -611.572910800845);
points << QPointF(626.0008011392239, -612.726626131226);
points << QPointF(646.344001271297, -614.2241418441603);
points << QPointF(665.6166127387285, -616.0418740333172);
points << QPointF(683.852235763044, -618.1562387923659);
points << QPointF(701.0844705657695, -620.5436522149755);
points << QPointF(717.3469173684304, -623.1805303948154);
points << QPointF(740.1064589876694, -627.5281911653576);
points << QPointF(767.2158272509128, -634.0157291924479);
points << QPointF(791.050847501361, -641.0766159345035);
points << QPointF(811.8803215112196, -648.5221801408777);
points << QPointF(829.9730510526945, -656.1637505609234);
points << QPointF(845.5978378979912, -663.8126559439941);
points << QPointF(859.0234838193154, -671.2802250394427);
points << QPointF(875.8174594072352, -681.8104815843149);
points << QPointF(892.6995269725167, -693.39354704172);
points << QPointF(899.4017385826772, -697.5307086614174);
point = QPointF(756.052743609466, -631.2251813422373);
// Real case. Issue #458. https://bitbucket.org/dismine/valentina/issues/458/issue-with-segment-of-curve
// See file <root>/src/app/share/collection/bugs/Issue_#458.val
QTest::newRow("Issue #458") << points << point << true;
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -38,7 +38,6 @@ public:
explicit TST_VAbstractCurve(QObject *parent = nullptr);
private slots:
void GetSegmentPoints_issue458();
void IsPointOnCurve_data() const;
void IsPointOnCurve() const;
};

View File

@ -570,9 +570,8 @@ QVector<QPointF> TST_VAbstractPiece::OutputPointsCase1() const
points += QPointF(556.8930273120665, -30.847456102511416);
points += QPointF(539.6101141051189, 79.89131577778163);
points += QPointF(585.9167315845334, -20.702420721823447);
points += QPointF(1117.4712505569892, 212.6701769158142);
points += QPointF(1107.8013393916237, 232.47256047676322);
points += QPointF(1096.0328222042483, 257.2724337531229);
points += QPointF(1117.424153174025, 212.64949937811681);
points += QPointF(1095.8827941924872, 257.6002084082805);
points += QPointF(1085.2347243947604, 280.86364678273935);
points += QPointF(1075.284743777034, 303.4467181585846);
points += QPointF(1066.1500107021461, 325.033221582634);
@ -589,10 +588,6 @@ QVector<QPointF> TST_VAbstractPiece::OutputPointsCase1() const
points += QPointF(1001.5753826870504, 572.6532694631434);
points += QPointF(1001.7511114738644, 580.6472328726268);
points += QPointF(1002.5244573746393, 592.6631414076071);
points += QPointF(1011.1831553003773, 625.860901250618);
points += QPointF(1013.5469326629959, 631.1835932583286);
points += QPointF(1016.1978697144372, 636.6181674061058);
points += QPointF(1019.1173567112357, 642.0917891993197);
points += QPointF(1022.283791807397, 647.5382096308747);
points += QPointF(1025.6730034935645, 652.8974380139866);
points += QPointF(1029.258679857382, 658.1156604426072);