Naar inhoud

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.

ts
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:

ts
// 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 / egoTree doet 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.

OptieTypStandaardBeschrijving
userWorkerBooleaanstrueMoet de initiële berekening van de knooppuntplaatsing worden uitgevoerd door een webwerker
enabledBooleaanstrueMoet de simulatie actief zijn
physics'auto' | 'manual''auto'†Wie bepaalt de krachtinstellingen — zie Automatische lay-outafstemming.
warmupTicksnummer | '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.
d3Alphanummer1.0Initiële simulatie-alfa
d3AlphaMinnummer0.001Minimale alfawaarde voordat de simulatie stopt.
d3VelocityDecaynummer0.4Wrijving toegepast op knooppuntsnelheden.
d3LinkDistancenummer30Standaardafstand tussen verbonden knooppunten.
freezeNodesOnDragBooleaanstrueOf knooppunten worden bevroren zodra ze worden vrijgegeven na een sleepbewerking.
callbacksSimulationCallbacksundefinedHooks 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 ​

ts
pause(): void;
reheat(alpha?: number): void;
restart(): void;
start(): Promise<void>;
stop(): void;

Veranderende indeling ​

ts
changeLayout(
    type: LayoutType,
    simulationOptions?: DeepPartial<SimulationOptions.SimulationOptions>,
): Promise<void>;
ts
graph.simulation.changeLayout('tree', {
    layout: {
         horizontal: false,
         rootIdAlgorithmFinder: 'FirstZeroInDegree'
    }
})

Stabilisatie terugbellen ​

ts
waitForSimulationStop(): Promise<void>;
ts
graph.simulation.reheat(0.7)
// Wait until the simulation stops
await graph.simulation.waitForSimulationStop()
graph.renderer.fitAndCenter()