Rotate vector relative to another vector by 90°?

hello! there’s a silly little math problem that’s been bullying me for a while now. my goal is to rotate a vector 90° in the direction of another vector.

here’s an example of how that should look:

the blue vector is the direction and the green one is the one i want to rotate by 90 degrees on that axis. the red vector represents the desired result.

i’m willing 2 bet the answer is something rlly simple, but it looks im not smart enough 4 that yet :broken_heart:
thank u 4 ur time

hang on, i managed to come up with a solution! it’s far from elegant, and it isn’t perfectly precise, but it’s simple and works pretty well!

here’s what it looks like:

local up = script.Parent.green
local direction = script.Parent.blue
local result = script.Parent.red

local zero = Vector3.zero

local upVector = up.CFrame.UpVector
local lookVector = direction.CFrame.UpVector

local angle = lookVector:Dot(upVector)

local resultVector = (CFrame.lookAt(zero, zero + lookVector) * CFrame.Angles(-angle, 0, 0)).LookVector

if anyone has a better solution, i’d still love to hear it!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.