Simulatie-opties
In Pivotick wordt de natuurkundige simulatie gedeeltelijk beheerd op prestaties en stabiliteit. Het omvat:
- Voorberekening: de lay-out wordt gesimuleerd voordat de grafiek wordt weergegeven en stopt zodra deze vrijwel stabiel is.
- Getimede uitvoering: de simulatie stopt automatisch als deze te lang duurt.
- Start/stop-bediening: de engine voorkomt dat de simulatie onnodig op de achtergrond draait.
Vanwege dit gecontroleerde gedrag zal het toevoegen van knooppunten nadat de simulatie is voltooid de fysica niet automatisch opnieuw uitvoeren. Als u de grafiek dynamisch wijzigt, moet u de lay-out handmatig "opnieuw verwarmen" om een nieuwe simulatiepassage te activeren.
const graph = new Pivotick(container, data)
// Add nodes
graph.simulation.reheat(0.7) Automatische lay-outafstemming
Standaard stemt Pivotick de lay-out voor u af. In plaats van één vaste bundel toe te passen van krachtinstellingen voor elke grafiek, het leidt deze af van wat er feitelijk op het scherm staat - hoeveel knooppunten er zijn, hoe groot ze zijn en hoe groot het canvas is - en leidt ze opnieuw af wanneer dat verandert. Vier kleine knooppunten krijgen ruimte om te ademen; veertig grote exemplaren worden dichterbij gepakt zonder elkaar aan te raken.
Dit is de voorinstelling Auto en staat aan, tenzij je anders zegt:
// Auto: no physics configured, so Pivotick tunes the layout as the graph changes.
new Pivotick(container, data)
// Manual: you set a physics option, so your value is kept and nothing re-tunes.
new Pivotick(container, data, { simulation: { d3LinkDistance: 200 } })
// Explicit, either way.
new Pivotick(container, data, { simulation: { physics: 'manual' } })
new Pivotick(container, data, { simulation: { physics: 'auto', d3LinkDistance: 200 } })De regel is bewust conservatief: stel de optie any in die automatisch rijdt (d3LinkDistance, d3ManyBodyStrength, d3CollideRadiusMultiplier, d3VelocityDecay, d3GravityStrength, d3GravityStrengthConnected, d3AlphaDecay, cooldownTime) schakelt Auto uit voor die grafiek, dus een bestaande configuratie wordt nooit stilletjes overgenomen. physics: 'auto' naast expliciet opties zijn nog steeds legaal: de expliciete waarden zaaien het openingsframe en Auto neemt vandaar.
Auto verplaatst alleen dezelfde knoppen die in het vervolgmenu Physics zichtbaar zijn, en de schuifregelaars volg mee terwijl het zich opnieuw afstemt, zodat zijn beslissingen zichtbaar zijn in plaats van verborgen. Zelf aan een knop draaien (een schuifregelaar, een set*-oproep of de Tight/Loose-presets) neemt het voorgoed terug; niets zal achteraf opnieuw afstemmen op uw keuze.
Nog twee opmerkingen:
- Auto is alleen een geforceerde lay-out. Onder
tree/egoTreedoet het niets, omdat tree de afstand is de zaak van de lay-out. - Auto herstart nooit een simulatie die is gepauzeerd (of die door de slow-tick watchdog uitgeschakeld). Het werkt nog steeds aan de knoppen; het maakt gewoon niets wakker.
fooi
Vastzetten van physics: 'manual' is de juiste oproep voor screenshottests en thumbnails, waarbij u elke keer dezelfde afbeelding wilt, ongeacht de grafiekgrootte.
Opties
De Simulatie-opties bepalen de fysica en het lay-outgedrag van knooppunten en randen voor de grafische simulatie-engine.
Bekijk D3-force officiële documentatie voor meer informatie.
| Optie | Typ | Standaard | Beschrijving |
|---|---|---|---|
userWorker | Booleaans | true | Moet de initiële berekening van de knooppuntplaatsing worden uitgevoerd door een webwerker |
enabled | Booleaans | true | Moet de simulatie actief zijn |
physics | 'auto' | 'manual' | 'auto'† | Wie bepaalt de krachtinstellingen — zie Automatische lay-outafstemming. |
warmupTicks | nummer | 'auto' | 'auto' | Vink aan dat de openingslay-out vóór het eerste frame loopt. 0 draait geen, dus knooppunten krijgen een x/y open waar ze waren, en de autofysica stemt opnieuw af zonder ze te verplaatsen totdat de grafiek verandert. |
d3Alpha | nummer | 1.0 | Initiële simulatie-alfa |
d3AlphaMin | nummer | 0.001 | Minimale alfawaarde voordat de simulatie stopt. |
d3VelocityDecay | nummer | 0.4 | Wrijving toegepast op knooppuntsnelheden. |
d3LinkDistance | nummer | 30 | Standaardafstand tussen verbonden knooppunten. |
freezeNodesOnDrag | Booleaans | true | Of knooppunten worden bevroren zodra ze worden vrijgegeven na een sleepbewerking. |
callbacks | SimulationCallbacks | undefined | Hooks voor het reageren op simulatiegebeurtenissen. |
† 'auto' alleen voor grafieken die geen van de opties Auto drives configureren; zie Automatische lay-outafstemming.
informatie
Andere D3-krachtparameters zoals d3AlphaDecay, d3ManyBodyStrength, d3CollideRadius zijn beschikbaar en gedocumenteerd in de API-referentie.
Terugbelgesprekken
onInit(sim: Simulation): aangeroepen wanneer de simulatie wordt geïnitialiseerd.onStart(sim: Simulation): Wordt aangeroepen wanneer de simulatie begint te lopen.onStop(sim: Simulation): Wordt aangeroepen wanneer de simulatie stopt.onTick(sim: Simulation): aangeroepen bij elk simulatievinkje.
API
Pivotick toont een simulatiecontroller waarmee je rechtstreeks met de fysica-engine kunt communiceren. Alle methoden zijn online beschikbaar
Stoppen / starten
pause(): void;
reheat(alpha?: number): void;
restart(): void;
start(): Promise<void>;
stop(): void;Veranderende indeling
changeLayout(
type: LayoutType,
simulationOptions?: DeepPartial<SimulationOptions.SimulationOptions>,
): Promise<void>;graph.simulation.changeLayout('tree', {
layout: {
horizontal: false,
rootIdAlgorithmFinder: 'FirstZeroInDegree'
}
})Stabilisatie terugbellen
waitForSimulationStop(): Promise<void>;graph.simulation.reheat(0.7)
// Wait until the simulation stops
await graph.simulation.waitForSimulationStop()
graph.renderer.fitAndCenter()