Mercurial > hg > orthanc-stone
view OrthancStone/Resources/Computations/IntersectSegmentAndVerticalLine.py @ 2181:eae006bfeea6 default tip
support images without the "Modality" tag
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 26 Nov 2024 16:37:46 +0100 |
parents | 16c01cc201e7 |
children |
line wrap: on
line source
#!/usr/bin/env python # Stone of Orthanc # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium # Copyright (C) 2017-2023 Osimis S.A., Belgium # Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License # as published by the Free Software Foundation, either version 3 of # the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program. If not, see # <http://www.gnu.org/licenses/>. from sympy import * # Intersection between the 2D line segment (prevX,prevY)-(curX,curY) and the # vertical line "x = x0" using homogeneous coordinates prevX, prevY, curX, curY, x0 = symbols('prevX prevY curX curY x0') p1 = Matrix([prevX, prevY, 1]) p2 = Matrix([curX, curY, 1]) l1 = p1.cross(p2) h1 = Matrix([x0, 0, 1]) h2 = Matrix([x0, 1, 1]) l2 = h1.cross(h2) a = l1.cross(l2) pprint(a / a[2])