Patronen, Laborierungen und Ballistik
Vier Endpunkte beantworten vier Fragen, die als eine gestellt werden. Der falsche bringt Gewehrgeschwindigkeiten auf eine Pistolenseite.
Welche Zahl Sie eigentlich wollen
Geschwindigkeit ist eine Eigenschaft einer Laborierung durch einen bestimmten Lauf, nicht der Patrone und nicht der Waffe. Jede Zeile hier legt einen anderen Teil dieses Satzes fest.
| Die Frage | Der Aufruf | Was er festlegt |
|---|---|---|
| Was ist diese Patrone, und woraus stammt sie? | GET /v1/calibers/{id} | Der Patronendatensatz: Maße, Hülsenform, die Abstammungslinks. |
| Wie leistungsfähig ist diese Patrone ungefähr? | GET /v1/calibers/ballistics?id= | Ein Profil aus der typischen Laborierung. Eine Größenordnung, keine kaufbare Patrone. |
| Welche Laborierungen gibt es darin? | GET /v1/calibers/{id}/ammunition | Die katalogisierten Fabrikladungen dieser Patrone. |
| Wie leistet diese Laborierung durch diesen Lauf? | GET /v1/ammunition/{id}/ballistics | Eine Laborierung, Ihre Distanzen, Ihre Lauflänge. |
| Wie leistet diese Waffe mit dieser Laborierung? | GET /v1/firearms/{id}/load?ammo_id= | Der eigene Lauf der Waffe, abgetastet bis 1000 m, mit Terminalindizes. |
| Deckt sich das mit den veröffentlichten Werten? | GET /v1/firearms/{id}/calculate?ammo_id= | Nur Mündungswerte, verglichen mit den Angaben des Datensatzes. |
Von der Patrone zur Tabelle
Drei Aufrufe, und der dritte ist der entscheidende: übergeben Sie den Lauf, den Sie modellieren. Ohne ihn bekommen Sie den Referenzlauf der Laborierung, richtig für eine Schachtelangabe und falsch für eine konkrete Waffe. Die Parameter stehen in der Munitionsreferenz.
// From a cartridge to a number on a page.// 1. The cartridge, and what else is in its family.const { data: caliber } = await gunspec.calibers.get('300-blackout') // 2. The factory loads actually catalogued in it.const { data: loads } = await gunspec.calibers.getAmmunition('300-blackout') // 3. One load, computed out to the distances you want to plot -// and through a specific barrel, because velocity is a property// of the pairing and not of the box.const { data: table } = await gunspec.ammunition.ballistics(loads[0].id, { barrel_length_mm: 406, distances: '0,100,200,300,400,500',})Ballistik für eine Waffe und eine Laborierung
Zwei Endpunkte, bewusst getrennt, weil Flugbahn und Mündungsvergleich zwei verschiedene Seiten sind.
// The same question asked of a firearm rather than a load.// `load` samples the trajectory out to 1000 m using the firearm's// own barrel: this is what a "chamber it and plot it" page wants.const { data: profile } = await gunspec.firearms.load('sig-sauer-mcx', { ammo_id: '300-blk-125gr-otm' }) // `calculate` returns muzzle figures only and compares them with// the figures the catalog records for that firearm. That is how// you show a computed number honestly beside a published one.const { data: muzzle } = await gunspec.firearms.calculate('sig-sauer-mcx', { ammo_id: '300-blk-125gr-otm' })loadist der Endpunkt zum Plotten: jeder Punkt trägt Geschwindigkeit, Energie, Fall, Flugzeit und die Indizes, sodass ein Diagramm eine Anfrage braucht.calculateist der ehrliche Endpunkt: er liefert die berechneten Mündungswerte neben den im Katalog verzeichneten, damit Sie eine Abweichung zeigen statt sie zu verstecken.- Beide setzen voraus, dass die Patrone zur Waffe passt. Erst die Waffe auflösen, ihre Kaliber lesen, dann Laborierungen daraus anbieten.
Patronenfamilien und Abstammung
/v1/calibers/{id}/parent-chain geht aufwärts und führt .300 Blackout zurück auf .223 Remington; /family liefert die Patrone mit Elternteil und allem daraus Abgeleiteten. Gut für "verwandte Patronen" und dafür zu erklären, warum zwei Namen fast dasselbe meinen. /v1/calibers/compare stellt bis zu fünf nebeneinander. Die Kaliberreferenz hat die Felder.
Berechnete Werte ehrlich zeigen
Eine berechnete Flugbahn ist ein Modell, und die veröffentlichten Werte im Katalog sind die Messung eines anderen. Die Ballistikfelder sagen, was was ist, und der Genauigkeitshinweis, wofür wir nicht einstehen.
- Kennzeichnen Sie berechnete Werte als berechnet und nennen Sie Lauflänge und Laborierung, die sie annehmen.
- Wo der Datensatz
sourceMuzzleVelocityMpsund Ähnliches trägt, sind das veröffentlichte Werte mit Quelle. Zeigen Sie sie als solche. - Mitteln Sie nie einen berechneten mit einem veröffentlichten Wert. Das sind verschiedene Aussagen, und ihr Mittel ist eine dritte, für die niemand einsteht.