How do I make a part orbit around another part with the lookvector?

I have a part that I want to be orbited around by another part. The part that is orbiting needs to use its CFrame.LookVector to move, because I need the part to be facing away from the part its orbiting. The way I tried doing this was with a .stepped loop that set the CFrame to the return of the function below.

local function calculateOrbit(bulletCFrame, orbitOrgin, bulletOrbitSpeed)
	local newPosition = bulletCFrame.Position + bulletCFrame.RightVector * bulletOrbitSpeed/40
	local newCFrame = CFrame.lookAt(newPosition, -orbitOrgin)
	
	return newPosition, newCFrame
end

Could you just use a HingeConstraint? It would allow for the orbiting object to always face one direction (away from the central item)

Constraints would be laggy with how I am using it. Its a bullet hell game.

This module I made a while ago calculates orbital position and velocity accurately using Kepler’s equations:

Im trying to make a part orbit around another using its lookvector like the not-working code above.