Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 721
  • Last Modified:

Vector scaling to a specific value

Suppose I have a 3D normal vector (x,y,z), and I am given a brightness value V. How can I find the scaling factor such that x^2 + y^2 + z^2 = V^2?
0
sph2105
Asked:
sph2105
  • 3
1 Solution
 
BrianGEFF719Commented:
If you know x, y, and z (which it sounds like you do) then "V" is the magnitude of the vector:

   V = sqrt[x^2 + y^2 + z^2]

But you've already said that you have a "3D normal vector," which means the magnitude is 1 (and so is V then), so this question doesn't really make sense. Can you please clarify?
0
 
BrianGEFF719Commented:
If you have a unit vector, then:

 x^2 + y^2 + z^2 = 1

and:

 v^2(x^2 + y^2 + z^2) = V^2

So:

 V^2 * x^2 + V^2 * y^2 + V^2 * z^2 = V^2

So, given V you're components are:

 (Vx,Vy,Vz)

0
 
sph2105Author Commented:
Sorry. Let me clarify.

x,y and z are indeed known,
V is some value that I have precalculated from some other function.

I need to scale x,y and z such that its magnitude (i.e. sqrt(x^2 + y^2 + z^2)) is equal to V.

Another way to look at is, I need x^2 + y^2 + z^2 = V^2.

The magnitude of vector (x,y,z) is not necessarily equal to V. I need to scale x,y and z it so that it IS always equal to V.

Sorry about that
0
 
BrianGEFF719Commented:
Then:

let's call the magnitude m.

m = sqrt[x^2 + y^2 + z^2]

Then:

You want: Vx/m, Vy/m, Vz/m


Turn the vector into a unit vector then scale by V.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now