Segment.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import Coordinate from '../geom/Coordinate'
  2. import LineSegment from '../geom/LineSegment'
  3. export default class Segment {
  4. constructor() {
  5. Segment.constructor_.apply(this, arguments)
  6. }
  7. static constructor_() {
  8. this._ls = null
  9. this._data = null
  10. if (arguments.length === 2) {
  11. const p0 = arguments[0], p1 = arguments[1]
  12. this._ls = new LineSegment(p0, p1)
  13. } else if (arguments.length === 3) {
  14. const p0 = arguments[0], p1 = arguments[1], data = arguments[2]
  15. this._ls = new LineSegment(p0, p1)
  16. this._data = data
  17. } else if (arguments.length === 6) {
  18. const x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5]
  19. Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2))
  20. } else if (arguments.length === 7) {
  21. const x1 = arguments[0], y1 = arguments[1], z1 = arguments[2], x2 = arguments[3], y2 = arguments[4], z2 = arguments[5], data = arguments[6]
  22. Segment.constructor_.call(this, new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data)
  23. }
  24. }
  25. getLineSegment() {
  26. return this._ls
  27. }
  28. getEndZ() {
  29. const p = this._ls.getCoordinate(1)
  30. return p.getZ()
  31. }
  32. getStartZ() {
  33. const p = this._ls.getCoordinate(0)
  34. return p.getZ()
  35. }
  36. intersection(s) {
  37. return this._ls.intersection(s.getLineSegment())
  38. }
  39. getStart() {
  40. return this._ls.getCoordinate(0)
  41. }
  42. getEnd() {
  43. return this._ls.getCoordinate(1)
  44. }
  45. getEndY() {
  46. const p = this._ls.getCoordinate(1)
  47. return p.y
  48. }
  49. getStartX() {
  50. const p = this._ls.getCoordinate(0)
  51. return p.x
  52. }
  53. equalsTopo(s) {
  54. return this._ls.equalsTopo(s.getLineSegment())
  55. }
  56. getStartY() {
  57. const p = this._ls.getCoordinate(0)
  58. return p.y
  59. }
  60. setData(data) {
  61. this._data = data
  62. }
  63. getData() {
  64. return this._data
  65. }
  66. getEndX() {
  67. const p = this._ls.getCoordinate(1)
  68. return p.x
  69. }
  70. toString() {
  71. return this._ls.toString()
  72. }
  73. }