ut_elli.c File Reference


Detailed Description

Ellipse _ell_.

=====================================================
Liste_Funktionen_Beginn:

UT3D_ck_el360             check if elli is 360-degree-elli
UT3D_par_par1ell          par 0-1  -->  parametric-Angle
UT3D_par1_parell          parametric-Angle --> par 0-1

UT2D_pt_elangd            pt <- parametric-Angle, rMaj, rMin.

UT3D_pt_evparEll          pt <- parametric-Angle
UT3D_pt_elangd            pt <- parametric-Angle.
UT3D_angr_elpt            parametric-Angle <- pt

UT3D_pt_ck_onel           check if point lies on an (full) ellipse
UT3D_pt_elfoc             focal points of ellipse
UT3D_pt_projptel          proj PT -> CRV-Ellipse
UT3D_pt_intlnel__         intersect line and ellipse
UT3D_pt_intlnel_p         intersection LN-ELL (gives 0/1/2 points)
UT3D_pt_intplell          intersect plane ellipse

UT3D_vc_tangel            Tangente duch Pu

UT3D_el_pt2vc2a           elli=center,vecMajAx,vecMinAx,AngStart,angEnd,dir.
UT3D_el_ci                change circ > ellipse
UT3D_el_projelpl          ellipse = project ELL -> PLN
UT3D_el_projcipl          ellipse = project CIR -> PLN
UT3D_el_elcoe             Ellipse <-- coeff-data (IGES)
UT3D_el_elpt180           change elli -> 180 deg-elli; keep dir
UT3D_el_el2pt             change start- and endpoint of elli
UT3D_elcoe_el             CoeffEllipse(IGES) <-- ellipse
UT3D_el_inv1              turn direction and p1/p2 (same display !)
UT3D_el_inv2              turn direction (do not swap p1,p2)

UT3D_cv_ell               Polygon <- Ellipse

Liste_Funktionen_Ende:
=====================================================

#include "../xa/MS_Def0.h"
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "../ut/ut_geo.h"
#include "../ut/ut_math.h"
#include "../ut/ut_umem.h"
#include "../gr/ut_UI.h"
#include "../ut/ut_elli.h"

Functions

int UT3D_el_ci (CurvElli *eo, Circ *ci)
int UT3D_el_inv1 (CurvElli *el1)
int UT3D_el_inv2 (CurvElli *el1)
double UT3D_par_par1ell (double lpar, CurvElli *el1)
double UT3D_par1_parell (double *lpar, CurvElli *el1)
int UT3D_ck_el360 (CurvElli *el1)
int UT3D_el_elpt180 (CurvElli *el1, Point *p1)
int UT3D_el_el2pt (CurvElli *el1, Point *p1, Point *p2)
double UT3D_angr_elpt (Point *pti, Point *ptc, Vector *va, Vector *vb)
int UT3D_pt_evparEll (Point *pto, CurvElli *el1, double lpar)
int UT3D_pt_elangd (Point *pto, Point *ptc, Vector *va, Vector *vb, double angr)
int UT2D_pt_elangd (Point2 *pto, double lx, double ly, double angr)
int UT3D_el_pt2vc2a (CurvElli *el, Point *ptc, Vector *vcx, Vector *vcy, double a1, double a2, int idir)
int UT3D_pt_ck_onel (Point *pt, CurvElli *el)
int UT3D_pt_elfoc (Point *fp1, Point *fp2, CurvElli *el)
int UT3D_vc_tangel (Vector *vc1, Point *pt1, CurvElli *el1)
int UT3D_cv_ell (Point cv[], int *numpt, CurvElli *el, int ptmax, double stol)
int UT3D_el_projelpl (CurvElli *elo, Plane *pl, CurvElli *eli)
int UT3D_el_projcipl (CurvElli *el, Plane *pl, Circ *ci)
int UT3D_pt_projptel (int *numpe, Point *pe, CurvElli *ell, Point *pt)
int UT3D_el_elcoe (CurvElli *obj, polcoeff_d5 *ec, Point2 *pa, Point2 *pe, double zt)
int UT3D_elcoe_el (polcoeff_d5 *ig, CurvElli *el)
int UT3D_pt_intplell (int *pNr, Point *pa, Plane *pln, CurvElli *el)
int UT3D_pt_intlnel__ (int *np, Point xp[], Line *ln, CurvElli *el)
int UT3D_pt_intlnel_p (int *np, Point xp[], Line *ln, CurvElli *el)


Function Documentation

int UT3D_el_ci ( CurvElli eo,
Circ ci 
)

    change circ > ellipse
    vz of circ must have length=1 !

int UT3D_el_inv1 ( CurvElli el1  ) 

int UT3D_el_inv2 ( CurvElli el1  ) 

UT3D_el_inv2 turn direction (do not swap p1,p2)

double UT3D_par_par1ell ( double  lpar,
CurvElli el1 
)

    UT3D_par_par1ell          par 0-1  -->  angle
    par_Angle  = StartAngle + (OpeningAngle * par1)

double UT3D_par1_parell ( double *  lpar,
CurvElli el1 
)

    UT3D_par1_parell          angle in einen Parameterwert von 0-1 aendern
    par1_Angle = (par_Angle - StartAngle) / OpeningAngle

int UT3D_ck_el360 ( CurvElli el1  ) 

    UT3D_ck_el360             check if elli is 360-degree-elli
    RC = 0:   YES, is elli
    RC = 1:   NO
    if(UT3D_ck_el360 == YES) ...

int UT3D_el_elpt180 ( CurvElli el1,
Point p1 
)

int UT3D_el_el2pt ( CurvElli el1,
Point p1,
Point p2 
)

UT3D_el_el2pt change start- and endpoint of elli

double UT3D_angr_elpt ( Point pti,
Point ptc,
Vector va,
Vector vb 
)

UT3D_angr_elpt parametric-Angle <- pt

int UT3D_pt_evparEll ( Point pto,
CurvElli el1,
double  lpar 
)

see UT3D_pt_elangd

int UT3D_pt_elangd ( Point pto,
Point ptc,
Vector va,
Vector vb,
double  angr 
)

UT3D_pt_elangd pt <- parametric-Angle.

int UT2D_pt_elangd ( Point2 pto,
double  lx,
double  ly,
double  angr 
)

    UT2D_pt_elangd            pt <- parametric-Angle, rMaj, rMin.
    Einen Punkt auf der 2D-Ellipse aus einem Winkel errechnen. Der Winkel ist
      nur als Parameter zu sehen; eine Linie unter diesem Winkel schneidet nur
      den Innen- und Aussenkreis; nicht die Ellipse !
    IN: angr = Winkel in rad,
        lx     Laenge Hauptachse
        ly     Laenge Nebenachse

int UT3D_el_pt2vc2a ( CurvElli el,
Point ptc,
Vector vcx,
Vector vcy,
double  a1,
double  a2,
int  idir 
)

    UT3D_el_pt2vc2a           elli=center,vecMajAx,vecMinAx,AngStart,angEnd,dir.
    idir: CCW (0)  od CW(1)

int UT3D_pt_ck_onel ( Point pt,
CurvElli el 
)

    UT3D_pt_ck_onel     check if point lies on an (full) ellipse
    
    Check if a point lies on an (full) ellipse.
    It is assumed that the point lies in the plane of the ellipse.
    
    IN:
      Point *pt    ... 3D-point
      CurvElli *el  ... 3D-ellipse
    OUT:
    Returncodes:
      0 = point is not on the ellipse
      1 = point is on the ellipse
     -1 = internal error

int UT3D_pt_elfoc ( Point fp1,
Point fp2,
CurvElli el 
)

    UT3D_pt_elfoc     focal points of ellipse
    
    Computation of the focal points of an ellipse.
    
    IN:
      CurvElli *el  ... 3D-ellipse
    OUT:
      Point *fp1   ... focal point 1 (in direction of main axis)
      Point *fp2   ... focal point 2
    Returncodes:
      0 = OK
     -1 = input error

int UT3D_vc_tangel ( Vector vc1,
Point pt1,
CurvElli el1 
)

UT3D_vc_tangel Tangente duch Punkt an die Ellipse

int UT3D_cv_ell ( Point  cv[],
int *  numpt,
CurvElli el,
int  ptmax,
double  stol 
)

    UT3D_cv_ell           Polygon <- Ellipse
    
    Polygonial curve from 3D-Ellipse.
    
    IN:
      CurvElli *el  ...  3D-ellipse
      int ptmax    ...  maximal number of polygonpoints
      double stol  ...  maximal deviation of secant
    OUT:
      Point cv[]   ...  array of polygonpoints
      int *numpt   ...  number of polygonpoints
    Returncodes:
      0  = OK
      1  = ellipse is a line (a = 0)
      2  = ellipse is a line (b = 0)
      -1 = degeneration of ellipse (a = b = 0)

int UT3D_el_projelpl ( CurvElli elo,
Plane pl,
CurvElli eli 
)

    UT3D_el_projelpl          ellipse = project ELL -> PLN
    
    see also UT3D_el_projcipl UPRJ_app_ci

int UT3D_el_projcipl ( CurvElli el,
Plane pl,
Circ ci 
)

    UT3D_el_projcipl          ellipse = project CIR -> PLN
    
    Project a circle onto a plane.
    
    IN:
      Plane *pl    ... projection plane
      Circ *ci     ... 3D - circle
    OUT:
      CurvElli *el  ... ellipse
    Returncodes:
      0 = OK
    
    see also UPRJ_app_el

int UT3D_pt_projptel ( int *  numpe,
Point pe,
CurvElli ell,
Point pt 
)

    UT3D_pt_projptel               proj PT -> CRV-Ellipse
    
    Project a point onto an ellipse.
    All possible cases are considered!
    
    IN:
      CurvElli *ell ... a 3D - ellipse
      Point *pt    ... a 3D - point
    OUT:
      int *numpe   ... number of points     (0-4 points out)
      Point *pe    ... points on the ellipse all having the same minimal 
                       distance to the input point
    Returncodes:
      0 = OK
      1 = input error

int UT3D_el_elcoe ( CurvElli obj,
polcoeff_d5 ec,
Point2 pa,
Point2 pe,
double  zt 
)

    UT3D_el_elcoe           Ellipse <-- coeff-data (IGES)
    
    
    ellipse from IGES-data of type 104.
    
    pa,pe  Beginn/Endpunkt der Elli in 2D-Zentrumslage (Center ist 0,0)
    zt = Hoehe der Z-Plane der Elli im 2D
    
    
    IN:
      IgesConic *ig   ... IGES-data of type 104 (conic arc entity)
    
    OUT:
      Ellipse
    
    Returncodes:
      0 = OK and conic is ellipse
     -1 = input error: data are no conic arc entity

int UT3D_elcoe_el ( polcoeff_d5 ig,
CurvElli el 
)

    UT3D_elcoe_el             CoeffEllipse(IGES) <-- ellipse
    
    the ellipse lies in a plane parallel x,y-plane and its axes need not be 
    parallel to x- resp. y- axis.
    
    IN:
      CurvElli *el   ...  ellipse in a plane parallel x,y-plane
    
    OUT:
      polcoeff_d5   ...  IGES-coefficients of the ellipse equation
    
    Returncode:
      0 = OK
     -1 = input error

int UT3D_pt_intplell ( int *  pNr,
Point pa,
Plane pln,
CurvElli el 
)

UT3D_pt_intplell intersect plane ellipse

int UT3D_pt_intlnel__ ( int *  np,
Point  xp[],
Line ln,
CurvElli el 
)

    UT3D_pt_intlnel__     intersect line and ellipse
    
    Intersection of line and ellipse.
    The line need NOT lie in the plane of the ellipse.
    
    IN:
      Line *ln     ... 3D-line
      CurvElli *el  ... 3D-ellipse
    OUT:
      int *np      ... number of intersection points (0,1,2)
      Point xp[]   ... array of intersection points
    Returncodes:
      0 = OK
      1 = no intersection
     -1 = ellipse degenerated

int UT3D_pt_intlnel_p ( int *  np,
Point  xp[],
Line ln,
CurvElli el 
)

    UT3D_pt_intlnel_p           intersection LN-ELL (gives 0/1/2 points)
    
            !! The line must lie in the plane of the ellipse. !!
    
    Intersection of 3D-line with 3D-ellipse.
    !! The line must lie in the plane of the ellipse. !!
    
    IN:
      Line *ln    ...  3D-line
      CurvElli *el ...  3D-ellipse
    OUT:
      int *np    ...  number of intersection points (0,1,2)
      Point xp[] ...  array of intersection points
    Returncodes:
      0 = OK
      1 = no intersection
     -1 = ellipse degenerated


Generated on Sat May 30 09:31:54 2009 for gCAD3D by  doxygen 1.5.6