ORBITER-FORUM will be temporarily closed at 2026-07-23 18:00 UTC while we complete some OF maintenance tasks. The amount of downtime is expected to take up to one hour, but probably less.
ancient man could meet an animal much cooler than a dinosaur
For example Dire wolf Smilodon Megatherium
In popular media, I see them most frenquently held with rear palm facing inwards, front palm outwards. It's a grip that was used sometimes, most frequently in certain situations in single combat as far as I can tell, and it does feel somewhat more natural and intuitive at first. Until you have to hold the bloody thing at or over your head and thrust from the top, then it just falls apart horribly.Is there another way to hold a spear?
I can't speak for other parts of the country but I have always heard it pronounced with the stress on the last syllable.So the stress is on the first syllable? Ach, pitty, it would sound way cuter with the stress on the "moose"...
In popular media, I see them most frenquently held with rear palm facing inwards, front palm outwards. It's a grip that was used sometimes, most frequently in certain situations in single combat as far as I can tell, and it does feel somewhat more natural and intuitive at first. Until you have to hold the bloody thing at or over your head and thrust from the top, then it just falls apart horribly.
So the stress is on the first syllable? Ach, pitty, it would sound way cuter with the stress on the "moose"...

I once took a traction unit in to the vehicle maintenance unit(VMU) at work with two lights out. He changed the bulbs, no luck. He changed the fuse, no change, he then took a screwdriver to the junction box, all the lights stopped working. It got fixed the next day by the senior mechanic, the apprentice learned lots that day. The problem was that a wire had worked loose from its connection, the apprentice was looking at the wrong end of the wire...
Last week I found the same guy under a trailer trying to work out where a fault was in 100m of wiring, most of which is not easily accessible.
I tend to be forgiving towords our mechanics, but always check their work though.
// Define the X-33 class
class X33: public VESSEL
{
public:
// Constructor
X33(OBJHANDLE hObj, int flightmodel);
// Destructor
~X33();
// Flight model override function
void clbkSetClassCaps(FILEHANDLE cfg);
// Flight model update function
void clbkPreStep(double simt, double simdt, double mjd);
private:
// Private variables for spacecraft dynamics
double mass;
double fuel;
VECTOR3 CoM;
VECTOR3 CoP;
VECTOR3 thrust_vector;
double thrust_magnitude;
double Isp;
double Cd;
double Cl;
double As;
double Ar;
// Private functions for spacecraft dynamics
void update_dynamics(double simt, double simdt);
void compute_forces_moments();
};
void X33::compute_forces_moments()
{
// Calculate current dynamic pressure
double v = length(vel);
double q = 0.5 * rho * v * v;
// Calculate lift and drag coefficients
double alpha = atan2(vel.z, vel.x);
double Cl = Cl0 + Cl_alpha * alpha;
double Cd = Cd0 + Cd_alpha * alpha + Cd_beta * beta * beta;
// Calculate lift and drag forces
double lift = q * As * Cl;
double drag = q * As * Cd;
VECTOR3 lift_vector = lift * normalize(cross(vel, CoP - CoM));
VECTOR3 drag_vector = drag * normalize(-vel);
// Calculate thrust force
VECTOR3 thrust_vector = thrust_magnitude * normalize(orient * thrust_direction);
// Calculate total force and moment vectors
VECTOR3 force_vector = lift_vector + drag_vector + thrust_vector;
VECTOR3 moment_vector = cross(CoP - CoM, force_vector);
// Set forces and moments on vessel
SetForce(force_vector);
SetMoment(moment_vector);
}
Seems OK after a quick look... it's missing the actual numbers, and it used VESSEL instead of VESSEL4, but on the other hand it wrote comments, so that already makes it better than 95% of programmers...@GLS in the video thread gave me an idea to ask it to make mods for Orbiter. That it can't, as in it can only output text, but it could write code, so I asked it to code the aerodynamic handling for the X-33 , based on similar aircraft . This is what it wrote. Perhaps someone who knows coding might shed some light on the quality of it, my coding experience is limited to Pascal, unfortunately.
Seems OK after a quick look... it's missing the actual numbers, and it used VESSEL instead of VESSEL4, but on the other hand it wrote comments, so that already makes it better than 95% of programmers...![]()
I think, as in the case of search engines etc, the code behind those might be nightmarishly complex. Then again, it's a neural net using machine learning, so it mostly codes itself to a certain extent. Not sure if that is good or bad.I think Ill keep on doing classic programming than trying to program an AI....
// Define the X-33 class
class X33 : public VESSEL4 {
public:
// Constructor
X33(OBJHANDLE hObj, int flightmodel);
// Flight model override function
void clbkSetClassCaps(FILEHANDLE cfg);
// Flight model update function
void clbkPreStep(double simt, double simdt, double mjd);
private:
// Private variables for spacecraft dynamics
double mass;
double fuel;
VECTOR3 CoM;
VECTOR3 CoP;
VECTOR3 thrust_vector;
double thrust_magnitude;
double Isp;
double Cd;
double Cl;
double As;
double Ar;
double bank_angle;
double pitch_angle;
double yaw_angle;
double altitude;
// Private functions for spacecraft dynamics
void update_dynamics(double simt, double simdt);
void compute_forces_moments();
};
// Constructor
X33::X33(OBJHANDLE hObj, int flightmodel) : VESSEL4(hObj, flightmodel) {
// Set initial values for private variables
mass = 27000.0;
fuel = 18000.0;
CoM = _V(0, 0, -5.6);
CoP = _V(0, 0, -4.2);
thrust_vector = _V(0, 0, -1);
thrust_magnitude = 300000.0;
Isp = 330.0;
Cd = 0.3;
Cl = 0.3;
As = 330.0;
Ar = 160.0;
bank_angle = 0.0;
pitch_angle = 0.0;
yaw_angle = 0.0;
altitude = 0.0;
}
// Flight model override function
void X33::clbkSetClassCaps(FILEHANDLE cfg) {
VESSEL4::clbkSetClassCaps(cfg);
// Set vessel mass and empty mass
SetEmptyMass(mass - fuel);
SetSize(10.0);
// Define propellant resources
AddPropellantResource("LH2", fuel);
// Define thruster groups
CreateThrusterGroup("main", 1, &thrust_vector, true, Isp, Cd, Cl, As, Ar);
}
// Flight model update function
void X33::clbkPreStep(double simt, double simdt, double mjd) {
// Update spacecraft dynamics
update_dynamics(simt, simdt);
// Calculate forces and moments acting on spacecraft
compute_forces_moments();
// Update spacecraft state
VESSEL4::clbkPreStep(simt, simdt, mjd);
}
// Private function to update spacecraft dynamics
void X33::update_dynamics(double simt, double simdt) {
// Update vessel velocity and position
VECTOR3 vel = GetRelativeVelocity();
VECTOR3 pos = GetRelativePos();
VECTOR3 acc = GetGravityRef()->GetAcceleration(GetPosition());
SetRelativeVel(vel + acc * simdt);
SetRelativePos(pos + vel * simdt + 0.5 * acc * simdt * simdt);
// Update vessel attitude
bank_angle += GetControlSurfaceLevel(AIRCTRL_BANK, 0) * simdt * 10;
pitch_angle += GetControlSurfaceLevel(AIRCTRL_PITCH, 0) * simdt *
// Define the X-33 class
class X33 : public VESSEL4
{
public:
// Constructor
X33(OBJHANDLE hObj, int flightmodel);
// Destructor
~X33();
// Flight model override function
void clbkSetClassCaps(FILEHANDLE cfg);
// Flight model update function
void clbkPreStep(double simt, double simdt, double mjd);
private:
// Private variables for spacecraft dynamics
double mass;
double fuel;
VECTOR3 CoM;
VECTOR3 CoP;
VECTOR3 thrust_vector;
double thrust_magnitude;
double Isp;
double Cd;
double Cl;
double As;
double Ar;
// Private functions for spacecraft dynamics
void update_dynamics(double simt, double simdt);
void compute_forces_moments();
};
X33::X33(OBJHANDLE hObj, int flightmodel) : VESSEL4(hObj, flightmodel)
{
// Set initial values for private variables
mass = 10000.0; // kg
fuel = 5000.0; // kg
CoM = _V(0, 0, 0); // m
CoP = _V(0, 0, 0); // m
thrust_vector = _V(0, 0, 0);
thrust_magnitude = 0.0;
Isp = 450.0; // s
Cd = 0.3;
Cl = 0.0;
As = 100.0; // m^2
Ar = 100.0; // m^2
}
X33::~X33()
{
// Destructor
}
void X33::clbkSetClassCaps(FILEHANDLE cfg)
{
// Set spacecraft capabilities in config file
VESSEL4::clbkSetClassCaps(cfg);
// Set fuel and mass properties
SetPropellantMass(THGROUP_MAIN, fuel);
SetEmptyMass(mass);
}
void X33::clbkPreStep(double simt, double simdt, double mjd)
{
// Update spacecraft dynamics
update_dynamics(simt, simdt);
// Compute forces and moments
compute_forces_moments();
// Update spacecraft state
SetThrusterGroupLevel(THGROUP_MAIN, thrust_magnitude);
SetForce(thrust_vector);
SetCoMOffset(CoM);
SetRotDrag(_V(Cd * As, Cd * As, Cd * Ar));
SetPitchMoment(_V(0, 0, Cl * As * 0.5));
SetBankMoment(_V(0, 0, Cl * As * 0.5));
SetLiftCoeff(Cl);
}
void X33::update_dynamics(double simt, double simdt)
{
// Compute spacecraft mass and fuel
mass = GetEmptyMass() + GetPropellantMass(THGROUP_MAIN);
fuel = GetPropellantMass(THGROUP_MAIN);
}
void X33::compute_forces_moments()
{
// Compute thrust vector and magnitude
thrust_vector = _V(0, 0, -thrust_magnitude);
thrust_magnitude = 50000.0 * GetThrusterGroupLevel
Not the kind of locomotive I prefer. But certainly a worthy and important milestone of human art of engineering.A happier anniversary today, the Flying Scotsman began service 100 years ago today.
![]()
Flying Scotsman | National Railway Museum
Find out all about the world's most famous steam locomotive.www.railwaymuseum.org.uk