objetsAdd/CDemiDroiteAdd.js

/*
 * Created by yvesb on 12/01/2017.
 */

/*
 * MathGraph32 Javascript : Software for animating online dynamic mathematics figures
 * https://www.mathgraph32.org/
 * @Author Yves Biton (yves.biton@sesamath.net)
 * @License: GNU AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
 */
import CDemiDroite from '../objets/CDemiDroite'
import { colineairesMemeSens, distancePointPoint, getStr, zero } from '../kernel/kernel'
import NatObj from '../types/NatObj'
import { projetteOrtho } from 'src/kernel/kernelVect'

export default CDemiDroite

CDemiDroite.prototype.distancePoint = function (xp, yp, masquage) {
  if (!(this.existe) || (masquage && this.masque)) return -1
  else {
    const pointr = { x: 0, y: 0 }
    projetteOrtho(xp, yp, this.point_x, this.point_y, this.vect, pointr)
    if (this.appartientA(pointr.x, pointr.y)) {
      return distancePointPoint(xp, yp, pointr.x, pointr.y)
    } else return -1
  }
}
/**
 * Fonction utilisée pour générer un nom pour le protocole de la figure
 * @returns {string}Le nom généré
 */
CDemiDroite.prototype.genereNom = function () {
  CDemiDroite.ind++
  return getStr('rdd') + CDemiDroite.ind
}
CDemiDroite.prototype.coincideAvec = function (p) {
  if (p.getNature() !== NatObj.NDemiDroite) return false
  return zero(this.point_x - p.point_x) && colineairesMemeSens(this.vect, p.vect)
}
/**
 * Fonction  servant à savoir si un point
 * est par définition sur une droite, demi-droite ou segment. Renverra true par exemple
 * si la droite est définie par deux points et le point est un de ces deux points
 * ou si le point est lié à la droite
 * A redéfinir pour les descendants
 * @param {CPt} po
 * @returns {boolean}
 **/
CDemiDroite.prototype.contientParDefinition = function (po) {
  return false
}