bilca commited on
Commit
ba14dfa
·
verified ·
1 Parent(s): 7bf3f06

Upload 85 files

Browse files
dist/controls/OrbitControls.d.ts CHANGED
@@ -14,7 +14,6 @@ declare class OrbitControls {
14
  setCameraTarget: (newTarget: Vector3) => void;
15
  update: () => void;
16
  dispose: () => void;
17
- constructor(camera: Camera, canvas: HTMLElement, alpha?: number, // <-- These parameters will be overridden
18
- beta?: number, radius?: number, enableKeyboardControls?: boolean, inputTarget?: Vector3);
19
  }
20
  export { OrbitControls };
 
14
  setCameraTarget: (newTarget: Vector3) => void;
15
  update: () => void;
16
  dispose: () => void;
17
+ constructor(camera: Camera, canvas: HTMLElement, alpha?: number, beta?: number, radius?: number, enableKeyboardControls?: boolean, inputTarget?: Vector3);
 
18
  }
19
  export { OrbitControls };
dist/index.js CHANGED
The diff for this file is too large to render. See raw diff
 
dist/index.js.map CHANGED
The diff for this file is too large to render. See raw diff
 
src/controls/OrbitControls.ts CHANGED
@@ -23,26 +23,18 @@ class OrbitControls {
23
  constructor(
24
  camera: Camera,
25
  canvas: HTMLElement,
26
- alpha: number = 0.5, // <-- These parameters will be overridden
27
  beta: number = 0.5,
28
  radius: number = 5,
29
  enableKeyboardControls: boolean = true,
30
  inputTarget: Vector3 = new Vector3(),
31
  ) {
32
- // 'target' is the point the camera orbits around.
33
  let target = inputTarget.clone();
34
 
35
- // Instead of using the passed alpha, beta, radius values,
36
- // compute them from the camera's initial position.
37
- // (This assumes that the camera.position is already set
38
- // to the desired initial position.)
39
- const dx = target.x - camera.position.x;
40
- const dy = target.y - camera.position.y;
41
- const dz = target.z - camera.position.z;
42
- let desiredRadius = Math.sqrt(dx * dx + dy * dy + dz * dz);
43
- let desiredBeta = Math.atan2(dy, Math.sqrt(dx * dx + dz * dz));
44
- let desiredAlpha = -Math.atan2(dx, dz);
45
  let desiredTarget = target.clone();
 
 
 
46
 
47
  let dragging = false;
48
  let panning = false;
@@ -136,6 +128,7 @@ class OrbitControls {
136
  } else {
137
  desiredAlpha -= dx * this.orbitSpeed * 0.003;
138
  desiredBeta += dy * this.orbitSpeed * 0.003;
 
139
  desiredBeta = Math.min(
140
  Math.max(desiredBeta, (this.minAngle * Math.PI) / 180),
141
  (this.maxAngle * Math.PI) / 180,
@@ -209,6 +202,7 @@ class OrbitControls {
209
 
210
  desiredAlpha -= dx * this.orbitSpeed * 0.003;
211
  desiredBeta += dy * this.orbitSpeed * 0.003;
 
212
  desiredBeta = Math.min(
213
  Math.max(desiredBeta, (this.minAngle * Math.PI) / 180),
214
  (this.maxAngle * Math.PI) / 180,
@@ -256,6 +250,7 @@ class OrbitControls {
256
  // Horizontal (azimuth) rotation with 'e' and 'q'
257
  if (keys["KeyE"]) desiredAlpha += rotateSpeed;
258
  if (keys["KeyQ"]) desiredAlpha -= rotateSpeed;
 
259
  desiredAlpha = Math.min(
260
  Math.max(desiredAlpha, (this.minAzimuth * Math.PI) / 180),
261
  (this.maxAzimuth * Math.PI) / 180
 
23
  constructor(
24
  camera: Camera,
25
  canvas: HTMLElement,
26
+ alpha: number = 0.5,
27
  beta: number = 0.5,
28
  radius: number = 5,
29
  enableKeyboardControls: boolean = true,
30
  inputTarget: Vector3 = new Vector3(),
31
  ) {
 
32
  let target = inputTarget.clone();
33
 
 
 
 
 
 
 
 
 
 
 
34
  let desiredTarget = target.clone();
35
+ let desiredAlpha = alpha;
36
+ let desiredBeta = beta;
37
+ let desiredRadius = radius;
38
 
39
  let dragging = false;
40
  let panning = false;
 
128
  } else {
129
  desiredAlpha -= dx * this.orbitSpeed * 0.003;
130
  desiredBeta += dy * this.orbitSpeed * 0.003;
131
+ // Clamp vertical angle (beta) only if limits are finite
132
  desiredBeta = Math.min(
133
  Math.max(desiredBeta, (this.minAngle * Math.PI) / 180),
134
  (this.maxAngle * Math.PI) / 180,
 
202
 
203
  desiredAlpha -= dx * this.orbitSpeed * 0.003;
204
  desiredBeta += dy * this.orbitSpeed * 0.003;
205
+ // Clamp vertical (polar) angle (beta) if limits are finite
206
  desiredBeta = Math.min(
207
  Math.max(desiredBeta, (this.minAngle * Math.PI) / 180),
208
  (this.maxAngle * Math.PI) / 180,
 
250
  // Horizontal (azimuth) rotation with 'e' and 'q'
251
  if (keys["KeyE"]) desiredAlpha += rotateSpeed;
252
  if (keys["KeyQ"]) desiredAlpha -= rotateSpeed;
253
+ // Clamp horizontal angle (azimuth) only if limits are finite
254
  desiredAlpha = Math.min(
255
  Math.max(desiredAlpha, (this.minAzimuth * Math.PI) / 180),
256
  (this.maxAzimuth * Math.PI) / 180