hi.
here is the circle line intersection as ofp script :
a function follows soon.
;// -------------------------------
;// eine DASPARADOXON.DE produktion
;// script (c) 2004 by CPU (dpsf)
;// -------------------------------
;//
;// Name : KreisGrade 0.0.3 (thx an iratu für mathematisches geleit)
;// Parameter : Kreismittelpunkt, Kreisradius, Gerade Punkt A, Gerade Punkt B
;//
;// ÃœBERGEBENE VARRIABLEN Parameter 0 => Kreismittelpunkt X
;// Parameter 1 => Kreismittelpunkt y
;// Parameter 2 => Kreisradius
;// Parameter 3 => Gerade A x
;// Parameter 4 => Gerade A y
;// Parameter 5 => Gerade B x
;// Parameter 6 => Gerade B y
;//
;//
;// INTERNE VARIABLEN :
;// _GM = Steigung der Geraden
;// _GB = Y-Achsenabschnitt der Geraden
;//
;// Rückgabewert : Schnittpunktanzahl, Punkt S1, Punkt S2
_KMX = _this select 0
_KMY = _this select 1
_KMR = _this select 2
_AX = _this select 3
_AY = _this select 4
_BX = _this select 5
_BY = _this select 6
;// meinelinie.m
_GM = (_BY - _AY) / (_BX - _AX)
;// meinelinie.b = meinelinie.y1-(meinelinie.m * meinelinie.x1)
_GB = _AY - ( _GM * _AX )
;// b = - 2* meinkreis.x + 2 * meinelinie.b*meinelinie.m -
;// 2 * meinkreis.y * meinelinie.m;
_QGB1 = -(2 * _KMX)
_QGB2 = (2 * _GB * _GM)
_QGB3 = (2 * _KMY * _GM)
_QGB = _QGB1
_QGB = _QGB + _QGB2
_QGB = _QGB + _QGB3
;// a = 1 + (meinelinie.m*meinelinie.m);
_QGA = 1 + _GM * _GM
;// c = (meinkreis.x*meinkreis.x) + (meinelinie.b*meinelinie.b) +
;// (2 * meinkreis.y * meinelinie.b) + (meinkreis.y*meinkreis.y)-
;// (meinkreis.radius*meinkreis.radius);
_QGC = _KMX^2+_GB^2+(2*_KMY*_GB)+_KMY^2-_KMR^2
;//d = (b*b)-(4* a *c)
_QGD = _QGB^2-(4*((_QGA*_QGC)))
;//x1 = (-b + sqrt(d))/(2*a);
_X1 = (-_QGB + sqrt(_QGD))/(2*_QGA)
_X2 = (-_QGB - sqrt(_QGD))/(2*_QGA)
;// y1 = (meinelinie.m*x1)+meinelinie.b;
_Y1 = (_GM*_X1)+_GB
_Y2 = (_GM*_X2)+_GB
;//-------------------------------------------
_AUSGABE2 = format["Schnittpunkt %1/%2 : %3/%4 : %5/%6 : %7 : GM:%8 GB:%9",_KMX,_KMY,_KMR,_AX,_AY,_BX,_BY,_GM,_GB]
_AUSGABE = format["Schnittpunkt %1/%2 : %3/%4 : GBA:%5 GBB : %6 GBC: %7 QGD: %8",_X1,_Y1,_X2,_Y2,_QGA,_QGB,_QGC,_QGD]
SPIELER globalchat _AUSGABE2
SPIELER globalchat _AUSGABE
exit