Quark-Renderer----파트 12

2021SC@SDUSC

개요

앞 절에서 quark-renderer의 몇 가지 코드 기능을 이벤트 측면에서 살펴보았는데, 마우스 터치와 같은 일련의 동작을 통해 click, move in, move out, scroll wheel sliding 등의 동작이 필요하다. 이벤트 소개 일부 작업의 구현 프로세스.

그래서 이번에는 기하학 패키지의 코드를 소개합니다.

기하학은 기하학이다.이 패키지에는 두 개의 js 파일이 포함되어 있습니다.이 두 개의 js 파일은 주로 점과 선을 소개합니다.그들은 실제 점과 선이 아닙니다.그들은 존재의 의미를 가지고 있습니다.이 점과 선을 별도로 소개하겠습니다.

기하학의 점

GeoPoint.js 파일에서 수집의 의미로 포인트를 정리하고 정리합니다. 저자가 언급한 점은 실제 의미의 점이 아니며 다음 코드 분석을 사용하여 기하학적 의미의 점 해석을 완료합니다.

js에서 js 파일의 주요 기능은 기하학적 의미에서 점의 정의를 구현하는 GeoPoint 클래스를 내보내는 것입니다.

먼저 점의 좌표로 x, y를 받는 생성자를 살펴봅니다.

로드(오) 기능

그런 다음 정적 로드 기능이 있습니다.이 기능의 기능은 새로운 GeoPoint 인스턴스 개체를 생성하는 것입니다.전달된 매개 변수는 x, y를 포함하는 json 개체이며 GeoPoint 개체를 반환합니다.

  static load(o) {
    
    
    return new GeoPoint(Number(o.x), Number(o.y));
  }
loadArray(v) 함수

Json 개체를 전달하고 GeoPoint 개체의 배열을 반환하는 정적 함수이기도 한 loadArray 함수를 살펴보겠습니다. 가장 중요한 것은 v의 각 값을 반복한 다음 load 함수를 호출하여 newPoint를 빌드하는 것입니다.

  static loadArray(v) {
    
    
    let newPoints = [];
    for (let i = 0; i < v.length; i++) {
    
    
      newPoints.push(GeoPoint.load(v[i]));
    }
    return newPoints;
  }
클론배열(v)

loadArray 함수에 해당하는 것은 cloneArray(v) 함수입니다. 이 함수의 결과도 GeoPoint 배열 객체를 반환합니다. 주요 작업은 복제 함수를 호출하는 것입니다. 다음은 이 두 함수의 코드입니다.

 clone() {
    
    
    let newPoint = new GeoPoint(this.x, this.y);
    return newPoint;
  }
  static cloneArray(v) {
    
    
    let newPoints = [];
    for (let i = 0; i < v.length; i++) {
    
    
      newPoints.push(v[i].clone());
    }
    return newPoints;
  }

cloneArray 함수에서 복제 함수는 루프를 통해 호출되고 루프 순회를 통해 포인트가 복제되고 포인트가 배열로 푸시됩니다.

pointsToArray(points) 방법

그 다음 포인트에 해당하는 메소드는 포인트를 변환하는 것인데, 이 함수의 기능은 포인트의 객체를 배열로 변환하여 저장하는 것입니다.

  static pointsToArray(points) {
    
    
    let result = [];
    for (let i = 0; i < points.length; i++) {
    
    
      result.push([points[i].x, points[i].y]);
    }
    return result;
  }
equals(point)、near(x,y,radius)

현재 포인트가 다른 포인트와 같은지 판단하는 방법도 있는데 이 방법은 매개변수로 전달된 포인트의 x, y좌표가 현재 포인트와 같은지 비교하여 두 포인트가 같은지 판단하는 방법입니다.

  equals(anotherPoint) {
    
    
    return this.x == anotherPoint.x && this.y == anotherPoint.y;
  }

위의 equals 메소드는 현재 포인트가 들어오는 포인트와 동일한지 여부를 확인하는 데 사용되며 다음 메소드는 특정 포인트(x, y)가 현재 GeoPoint의 특정 범위 내에 있는지 테스트하는 데 사용됩니다. 주로 일반적으로 사용하는 거리 공식으로 계산한 두 점 사이의 거리로 반지름 값보다 작으면 true, 그렇지 않으면 false로 반환됩니다.

  near(x, y, radius) {
    
    
    let distance = Math.sqrt(Math.pow(this.x - x, 2) + Math.pow(this.y - y, 2));
    return distance <= radius;
  }
추가(점)

동시에 이 js 클래스에는 점의 좌표를 전달하고 현재 점의 좌표를 추가하고 현재 점의 좌표를 업데이트하고 이 함수를 반환하여 추상 점을 추가했습니다.

 add(point) {
    
    
    this.x = this.x + point.x;
    this.y = this.y + point.y;
    return this;
  }

기하학적 의미에서 직선에 대한 코드가 많기 때문에 이 기사에서는 분석을 완료할 수 없으며 다음 기사를 위해 저장합니다.
그러나 기하논리선은 기하학적 의미에서 점으로 구분할 필요가 있는데, 이들 간의 연결에 대해서는 다음 글에서 자세히 소개하도록 하겠다.

요약하다

이 글에서는 주로 기하적 의미의 점들을 비교하는데, GeoPoint 클래스의 몇 가지 메소드 속성을 분석하여 클래스에 대한 깊은 이해를 갖게 되었고, 다음 시간에는 주로 기하적 의미의 직선을 분석할 것이다. 시간을 두고 둘 사이의 관계를 분석하고 토론합니다.

Supongo que te gusta

Origin blog.csdn.net/qq_53259920/article/details/121912839
Recomendado
Clasificación