前提・実現したいこと
趣味でPyQt5にてCADを作成しています。
各Line,Ellipse,ArcはQGraphicsPathItemを
拡張して作成しました。
発生している問題・エラーメッセージ
Line,Ellipse,ArcなどをTrimする機能を実装していた際に、
拡大していくとつながっていないことに気づきました。
(延長がたりなかったり,オーバーしていたり)
寸法的には0.03以下のレベルですが、CADでは致命的です。
Line同士のTrimではそういうことは起きておらず
いくら拡大してもきちんと繋がっています。
試しに、QGraphicsPathItemでEllipseを描画し、
1度づつ計算させたpointを重ねてみると
のように0.02ほどずれて描画されています。
該当のソースコード
Python
1ellipse = EllipseItem(3.0,50.0,70.0,70.0) 2# ellipse = QGraphicsEllipseItem(3.0-70.0,50.0-70.0,70.0*2,70.0*2) 3 4#Ellipse沿いに1°づつ点を置いています 5for i in range(360): 6 p = posEllipse(ellipse,i) 7 point = PointItem(p.x(),p.y()) 8 self.addItem(point) 9 10#円の中心からdeg度の位置を求めています 11def posEllipse(ellipse,deg): 12 theta =np.deg2rad(deg) 13 c1 = ellipse.center().x() 14 c2 = ellipse.center().y() 15 c = np.array([c1,c2]) 16 r = ellipse.radius() 17 unit = np.array([1,0]) 18 unit = unit.reshape(2,1) 19 p = c+r*np.dot(rotationMatrix(theta),unit).A1 20 return QPointF(p[0],p[1]) 21
試したこと
QGraphicsPathItemでなく
QGraphicsItemへの拡張に修正しても同様の現象が
起きてしまい、qt自体?の描画の問題なのでしょうか?
いくら拡大しても、すくなくとも0.0001レベルでは
円と点が一致している図を描きたいと考えています。
申し訳ありませんが、
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Python3.6.5 64bit
PyQt5.14
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/04 07:27
2020/01/06 06:26