*Because you put effort in your question and made a drawing, I put effort in giving a decent answer.*

This problem converts to a math problem of finding the intersection of a plane (given by a point and a normal vector), and a line (given by a direction vector and a point).

• Let’s call the first point of the line *(point to object)* **P1 (x1, y1, z1)** and the second point **P2 (x2, y2, z2)**. *(P2 is another random point on the line, for example: P1 + direction vector towards plane).*

• Let’s call the known point on the plane **P3 (x3, y3, z3)** and the normal vector **N (nx, ny, nz)**.

##
• Let’s call the needed point **P (x, y, z)**

We can write the line equation in vector form as:

**(P2-P1) . k + P1** *(Where k is a random number)*

**1.** We know that the needed point is on this line, for a certain value of k.

```
x = k.(x2 - x1) + x1
y = k.(y2 - y1) + y1
z = k.(z2 - z1) + z1
```

We also know that the vector **(P3-P)** must be perpendicular to the normal vector **N**. *(Since (P3-P) is a vector of the plane)*

**2.** For perpendicular vectors applies that their dot product equals zero:

```
(x3 - x).nx + (y3 - y).ny + (z3 - z)*nz = 0
```

Applying these 2 conditions, we get 4 equations with 4 variables: **x**, **y**, **z** and **k**.

When we solve these equations, we get:

```
x = ( ((y3 - y2).ny + (z3 - z2).nz + nx.x3).x1 - x2.((y3 - y1).ny + (z3 - z1).nz + nx.x3) ) / ( (x1 - x2).nx + (y1 - y2).ny + (z1 - z2).nz )
y = ( ((x3 - x2).nx + (z3 - z2).nz + ny.y3).y1 - y2.((x3 - x1).nx + (z3 - z1).nz + ny.y3) ) / ( (y1 - y2).ny + (x1 - x2).nx + (z1 - z2).nz )
z = ( ((y3 - y2).ny + (x3 - x2).nx + nz.z3).z1 - z2.((y3 - y1).ny + (x3 - x1).nx + nz.z3) ) / ( (z1 - z2).nz + (y1 - y2).ny + (x1 - x2).nx )
k = ( (x1 - x3).nx + (y1 - y3).ny + (z1 - z3).nz ) / ( (x1 - x2).nx + (y1 - y2).ny + (z1 - z2).nz )
```

You can either calculate x, y and z separately or calculate k and use it with the line equation.

I hope you understood somewhat what I tried to explain, best of luck!