diff --git a/MD11_Profile/MD-11 Side Profile.png b/MD11_Profile/MD-11 Side Profile.png new file mode 100644 index 0000000..36a26d1 Binary files /dev/null and b/MD11_Profile/MD-11 Side Profile.png differ diff --git a/MD11_Profile/MD-11 Side Profile.xcf b/MD11_Profile/MD-11 Side Profile.xcf new file mode 100644 index 0000000..eee5af8 Binary files /dev/null and b/MD11_Profile/MD-11 Side Profile.xcf differ diff --git a/MD11_Profile/MD-11 schemacts.blend b/MD11_Profile/MD-11 schemacts.blend new file mode 100644 index 0000000..dcc91e2 Binary files /dev/null and b/MD11_Profile/MD-11 schemacts.blend differ diff --git a/MD11_Profile/MD11 Profile SVG positions.txt b/MD11_Profile/MD11 Profile SVG positions.txt new file mode 100644 index 0000000..1bf87ef --- /dev/null +++ b/MD11_Profile/MD11 Profile SVG positions.txt @@ -0,0 +1,19 @@ +Mains y: 457,626 +Mains X: + +344,088 + (1126,566 - 344,088) / 2 + +1126,566 + (1910,904 - 1126,566) / 2 + +1910,904 + (2693,220 - 1910,904) / 2 + +2693,220 + (3477,993 - 2693,220) / 2 + + + +Lower y: 623,816 +Lower Y: + +679,888 + (1734,862 - 679,888) / 2 + +2392,429 + (3409,288 - 2392,429) / 2 \ No newline at end of file diff --git a/MD11_Profile/MD11_Profile.svg b/MD11_Profile/MD11_Profile.svg new file mode 100644 index 0000000..fa2e515 --- /dev/null +++ b/MD11_Profile/MD11_Profile.svg @@ -0,0 +1,136 @@ + + + + + + + + + + + 999/999999/999999/999999/9999999999999 \ No newline at end of file diff --git a/PackageSources/js-bundle/src/App.tsx b/PackageSources/js-bundle/src/App.tsx index 73572e6..fdf7e1c 100644 --- a/PackageSources/js-bundle/src/App.tsx +++ b/PackageSources/js-bundle/src/App.tsx @@ -1,5 +1,7 @@ import { FC, StrictMode, useEffect, useRef, useState } from 'react'; import styles from './App.module.scss'; +import Freight from './components/freight/Freight'; +import Pax from './components/pax/Pax'; import { ArmsFreight, PayloadFreight } from './configs/freighter'; import { ArmsPax, PayloadPax } from './configs/pax'; import { ArmsFuel, EmptyArm, Fuel, toPercentMAC } from './configs/shared'; @@ -133,16 +135,24 @@ const App: FC = () => { requestRef.current = requestAnimationFrame(mainLoop); if (requestRef.current !== undefined) return () => cancelAnimationFrame(requestRef.current as number); - }, [unit]); + }, [unit, aircraft]); + + //DEBUG + useEffect(() => { + console.log('Payload', payload); + console.log('Fuel', fuel); + console.log('ZFWCG', ZFWCG); + console.log('TOCG', TOCG); + }, [ZFWCG, TOCG]); return ( (unit === 'lbs' ? setUnit('kg') : setUnit('lbs'))}>Change unit from {unit} - - {JSON.stringify(payload, null, 2)} - {JSON.stringify(fuel, null, 2)} - + (aircraft === 'f' ? setAircraft('pax') : setAircraft('f'))}> + Change aircraft from {aircraft} + + {aircraft === 'f' ? : } ); diff --git a/PackageSources/js-bundle/src/components/freight/Freight.tsx b/PackageSources/js-bundle/src/components/freight/Freight.tsx new file mode 100644 index 0000000..b5ed211 --- /dev/null +++ b/PackageSources/js-bundle/src/components/freight/Freight.tsx @@ -0,0 +1,9 @@ +const Freight = () => { + return ( + + + + ); +}; + +export default Freight; diff --git a/PackageSources/js-bundle/src/components/pax/Pax.tsx b/PackageSources/js-bundle/src/components/pax/Pax.tsx new file mode 100644 index 0000000..1932c21 --- /dev/null +++ b/PackageSources/js-bundle/src/components/pax/Pax.tsx @@ -0,0 +1,52 @@ +import { FC } from 'react'; +import { + maxBusiness1StationCount, + maxBusiness2StationCount, + maxEconomy1StationCount, + maxEconomy2StationCount, + paxWeight, + PayloadPax, +} from '../../configs/pax'; +import Profile from '../profile/Profile'; + +interface PaxProps { + unit: 'kg' | 'lbs'; + payload: PayloadPax; +} + +const Pax: FC = ({ unit, payload }) => { + const upper1 = () => { + return Math.round((payload.business1Left + payload.business1Center + payload.business1Right) / paxWeight[unit]); + }; + const upper2 = () => { + return Math.round((payload.business2Left + payload.business2Center + payload.business2Right) / paxWeight[unit]); + }; + const upper3 = () => { + return Math.round((payload.economy1Left + payload.economy1Center + payload.economy1Right) / paxWeight[unit]); + }; + const upper4 = () => { + return Math.round((payload.economy2Left + payload.economy2Center + payload.economy2Right) / paxWeight[unit]); + }; + const lower1 = () => { + return Math.round(payload.forwardCargo); + }; + + const lower2 = () => { + return Math.round(payload.rearCargo); + }; + + return ( + + + + ); +}; + +export default Pax; diff --git a/PackageSources/js-bundle/src/components/profile/Profile.tsx b/PackageSources/js-bundle/src/components/profile/Profile.tsx new file mode 100644 index 0000000..e140e26 --- /dev/null +++ b/PackageSources/js-bundle/src/components/profile/Profile.tsx @@ -0,0 +1,84 @@ +import { FC } from 'react'; + +interface ProfileProps { + upper1: string; + upper2: string; + upper3: string; + upper4: string; + lower1: string; + lower2: string; +} + +const Profile: FC = ({ upper1, upper2, upper3, upper4, lower1, lower2 }) => { + return ( + + + + + + + + + + + + + {upper1} + + + {upper2} + + + {upper3} + + + {upper4} + + + + {lower1} + + + {lower2} + + + ); +}; + +export default Profile; diff --git a/PackageSources/js-bundle/src/configs/freighter.ts b/PackageSources/js-bundle/src/configs/freighter.ts index 6ca83bb..f190825 100644 --- a/PackageSources/js-bundle/src/configs/freighter.ts +++ b/PackageSources/js-bundle/src/configs/freighter.ts @@ -33,4 +33,21 @@ export const ArmsFreight = { lowerRear: -360, leftAuxF: 60, rightAuxF: 60, -} \ No newline at end of file +}; + +//PMC pallet +export const maxUpperStationWeight = { + kg: (26 / 8) * 6804, + lbs: (26 / 8) * 15000, +}; + +export const baseWeightFreight = { + pilot: { + lbs: 190, + kg: 86, + }, + firstOfficer: { + lbs: 190, + kg: 86, + }, +}; diff --git a/PackageSources/js-bundle/src/configs/pax.ts b/PackageSources/js-bundle/src/configs/pax.ts index 9af17d6..c2276a0 100644 --- a/PackageSources/js-bundle/src/configs/pax.ts +++ b/PackageSources/js-bundle/src/configs/pax.ts @@ -23,27 +23,60 @@ export interface PayloadPax { } // TODO: Extract from CFG at runtime. -// FIXME: Copy over values export const ArmsPax = { - pilot: 0, - firstOfficer: 0, - engineer: 0, - cabinCrewFront: 0, - business1Left: 0, - business1Center: 0, - business1Right: 0, - business2Left: 0, - business2Center: 0, - business2Right: 0, - economy1Left: 0, - economy1Center: 0, - economy1Right: 0, - economy2Left: 0, - economy2Center: 0, - economy2Right: 0, - cabinCrewRear: 0, - forwardCargo: 0, - rearCargo: 0, - leftAuxPax: 0, - rightAuxPax: 0, + pilot: 984, + firstOfficer: 984, + engineer: 960, + cabinCrewFront: 792, + business1Left: 540, + business1Center: 540, + business1Right: 540, + business2Left: 300, + business2Center: 300, + business2Right: 300, + economy1Left: -240, + economy1Center: -240, + economy1Right: -240, + economy2Left: -600, + economy2Center: -600, + economy2Right: -600, + cabinCrewRear: -660, + forwardCargo: 360, + rearCargo: -360, + leftAuxPax: 60, + rightAuxPax: 60, +}; + +// TODO: Make user adjustable +export const paxWeight = { + kg: 86, + lbs: 190, +}; + +export const maxBusiness1StationCount = 30; // all Business rows +export const maxBusiness2StationCount = 45; // first 5 "Economy" as "Premium Economy" +export const maxEconomy1StationCount = 86; // up to and including the 5 seat Economy row +export const maxEconomy2StationCount = 137; // rest of Economy rows + +export const baseWeightPax = { + pilot: { + lbs: 190, + kg: 86, + }, + firstOfficer: { + lbs: 190, + kg: 86, + }, + engineer: { + lbs: 190, + kg: 86, + }, + cabinCrewFront: { + lbs: 380, + kg: 172, + }, + cabinCrewRear: { + lbs: 950, + kg: 430, + }, }; diff --git a/PackageSources/js-bundle/src/configs/shared.ts b/PackageSources/js-bundle/src/configs/shared.ts index 1aa1114..3360a93 100644 --- a/PackageSources/js-bundle/src/configs/shared.ts +++ b/PackageSources/js-bundle/src/configs/shared.ts @@ -43,3 +43,15 @@ const LEMAC = quarterMAC + (1 / 4) * MAC; export const toPercentMAC = (positionInInches: number) => { return Math.abs(((positionInInches - LEMAC) / MAC) * 100); }; + +//PMC pallet due to 104in door +export const maxForwardLowerStationWeight = { + kg: 6 * 6804, + lbs: 6 * 15000, +}; + +//LD3s due to 70in door +export const maxRearLowerStationWeight = { + kg: 14 * 1588, + lbs: 14 * 3500, +}; diff --git a/PackageSources/load-manager-panel/tfdidesign-md11-load-manager-panel.xml b/PackageSources/load-manager-panel/tfdidesign-md11-load-manager-panel.xml index 8e3697c..8506e35 100644 --- a/PackageSources/load-manager-panel/tfdidesign-md11-load-manager-panel.xml +++ b/PackageSources/load-manager-panel/tfdidesign-md11-load-manager-panel.xml @@ -6,9 +6,9 @@ url="html_UI/InGamePanels/tfdidesign-md11-load-manager-panel/index.html" resizeDirections="both" minWidth="100" - minHeight="60" + minHeight="70" defaultWidth="100" - defaultHeight="60" + defaultHeight="70" defaultTop="10" defaultLeft="10" icon="ICON_TFDIDESIGN_MD11_LOAD_MANAGER" diff --git a/README.md b/README.md new file mode 100644 index 0000000..d80da30 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# Sources + +- https://www.boeing.com/content/dam/boeing/boeingdotcom/company/about_bca/startup/pdf/freighters/MD11BCF.pdf +- LAMM +- https://www.satco-inc.com/product-pallet/?part_number=31086-595 +- https://www.satco-inc.com/product-container/?part_number=34124-901 \ No newline at end of file diff --git a/WB MD-11 calc.txt b/WB MD-11 calc.txt new file mode 100644 index 0000000..ede0d10 --- /dev/null +++ b/WB MD-11 calc.txt @@ -0,0 +1,65 @@ +F + +MAC Pos as found in DEBUG: 24.16ft +LEMAC Pos as found in DEBUG: -7.71ft + +Empty weight + Arm: -13.3ft + Weight: 112748kg + Moment: Arm * Weight = -1499548.4 kg*ft + +77kg in Pilot station + Arm: 82ft + Weight: 77kg + Moment: Arm * Weight = 6314 kg*ft +77kg in FO station + Arm: 82ft + Weight: 77kg + Moment: Arm * Weight = 6314 kg*ft +77kg in FE station + Arm: 80ft + Weight: 77kg + Moment: Arm * Weight = 6160 kg*ft + +Total: + Weight: Sum = 112979kg + Moment: Sum = -1480760.4 kg*ft + CG: Moment / Weight = -13.11ft (-13.1065065189) + +As %MAC + abs(((CG - LEMAC) / MAC) * 100) + abs(((-13.11 - -7.71) / 24.16) * 100) + 22.35 + +PAX + +MAC Pos as found in DEBUG: 24.16ft +LEMAC Pos as found in DEBUG: -7.71ft + +Empty weight + Arm: -13.3ft + Weight: 128809kg + Moment: Arm * Weight = -1713159.7 kg*ft + +77kg in Pilot station + Arm: 82ft + Weight: 77kg + Moment: Arm * Weight = 6314 kg*ft +77kg in FO station + Arm: 82ft + Weight: 77kg + Moment: Arm * Weight = 6314 kg*ft +77kg in FE station + Arm: 80ft + Weight: 77kg + Moment: Arm * Weight = 6160 kg*ft + +Total: + Weight: Sum = 129040kg + Moment: Sum = -1694371.7 kg*ft + CG: Moment / Weight = -13.13ft (-13.1305928394) + +As %MAC + abs(((CG - LEMAC) / MAC) * 100) + abs(((-13.13 - -7.71) / 24.16) * 100) + 22.35 \ No newline at end of file
{JSON.stringify(payload, null, 2)}
{JSON.stringify(fuel, null, 2)}