You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知两点坐标、边长及夹角,求第三点坐标的方法

How to Find Coordinates of Point C Given A, B, AB Length, BC Length, and ∠ABC

Alright, let's break this down step by step—this is a classic coordinate geometry problem that's totally solvable with vector rotation and basic coordinate transformations. Here's how to do it clearly:

Core Idea

We'll translate the problem to a temporary coordinate system centered at point B (to simplify calculations), rotate the vector BA by the given angle to get the direction of BC, scale it to the length of BC, then translate back to the original coordinate system. This works because ∠ABC is the angle between vectors BA and BC at point B.


Step-by-Step Solution

Let's define our known values first:

  • Point A: (x_A, y_A)

  • Point B: (x_B, y_B)

  • Length AB: L_AB (we can also calculate this from A and B's coordinates, but we'll use the given value if provided)

  • Length BC: L_BC

  • ∠ABC: θ (note: this angle can be clockwise or counterclockwise, which will give two possible positions for C unless θ is 0° or 180°)

  • Calculate Vector BA
    First, shift our perspective to make B the origin. The vector from B to A is:

    BA_x = x_A - x_B
    BA_y = y_A - y_B
    
  • Get the Unit Vector of BA
    We need the direction of BA without its length, so we normalize it to a unit vector (length = 1):

    unit_BA_x = BA_x / L_AB
    unit_BA_y = BA_y / L_AB
    

    (If you didn't have L_AB given, you could calculate it as sqrt(BA_x² + BA_y²) instead.)

  • Rotate the Unit Vector to Get BC's Direction
    The angle θ is between BA and BC, so we rotate the unit BA vector by θ to get the direction of BC. There are two possible rotations, which give the two possible positions of C:

    • Counterclockwise rotation (one possible C):
      unit_BC_x = unit_BA_x * cosθ - unit_BA_y * sinθ
      unit_BC_y = unit_BA_x * sinθ + unit_BA_y * cosθ
      
    • Clockwise rotation (the other possible C):
      unit_BC_x = unit_BA_x * cosθ + unit_BA_y * sinθ
      unit_BC_y = -unit_BA_x * sinθ + unit_BA_y * cosθ
      

    ⚠️ Important: Make sure θ is in radians if you're using calculator or programming functions (most cos()/sin() functions use radians). Convert degrees to radians with: θ_rad = θ_deg * π / 180

  • Scale to Get Vector BC
    Multiply the unit BC vector by the length of BC to get the full vector from B to C:

    BC_x = unit_BC_x * L_BC
    BC_y = unit_BC_y * L_BC
    
  • Convert Back to Original Coordinates
    Add the BC vector to point B's coordinates to get point C:

    x_C = x_B + BC_x
    y_C = y_B + BC_y
    

Example Walkthrough

Let's say:

  • A = (0, 0), B = (2, 0)
  • L_AB = 2, L_BC = 2
  • ∠ABC = 90° (π/2 radians)
  1. Vector BA: BA_x = 0-2 = -2, BA_y = 0-0 = 0
  2. Unit BA: unit_BA_x = -2/2 = -1, unit_BA_y = 0/2 = 0
  3. Counterclockwise rotation (90°):
    unit_BC_x = (-1)*cos(π/2) - 0*sin(π/2) = 0
    unit_BC_y = (-1)*sin(π/2) + 0*cos(π/2) = -1
  4. Vector BC: BC_x = 0*2 = 0, BC_y = -1*2 = -2
  5. Point C: x_C = 2+0=2, y_C=0+(-2)=-2 → C=(2,-2)

For the clockwise rotation (90°):
3. unit_BC_x = (-1)*cos(π/2) + 0*sin(π/2) = 0
unit_BC_y = -(-1)*sin(π/2) + 0*cos(π/2) = 1
4. BC_x=0*2=0, BC_y=1*2=2
5. Point C: (2+0, 0+2) → C=(2,2)

Which matches our intuition—two points forming a right angle with AB at B.


内容的提问来源于stack exchange,提问作者Alex Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:27:27