// Trace types consumed by SurfView — duplicated from numbl's src/graphics/types.ts // so this app renders surfaces with the exact same code numbl uses. export interface Plot3Trace { x: number[]; y: number[]; z: number[]; lineStyle?: string; marker?: string; color?: [number, number, number]; lineWidth?: number; markerSize?: number; markerEdgeColor?: [number, number, number]; markerFaceColor?: [number, number, number]; markerIndices?: number[]; id?: number; } export interface SurfTrace { /** X coordinates: flat array of length rows*cols (column-major) */ x: number[]; /** Y coordinates: flat array of length rows*cols (column-major) */ y: number[]; /** Z values: flat array of length rows*cols (column-major) */ z: number[]; /** Number of rows in the grid */ rows: number; /** Number of columns in the grid */ cols: number; /** Optional color data (same shape as Z) */ c?: number[]; edgeColor?: [number, number, number] | "none" | "flat" | "interp"; faceColor?: | [number, number, number] | "flat" | "interp" | "none" | "texturemap"; faceAlpha?: number; } export interface Bar3Trace { x: number[]; y: number[]; z: number[]; rows: number; cols: number; width: number; color?: [number, number, number]; } export interface Quiver3Trace { x: number[]; y: number[]; z: number[]; u: number[]; v: number[]; w: number[]; showArrowHead: boolean; color?: [number, number, number]; lineStyle?: string; lineWidth?: number; marker?: string; markerFilled?: boolean; autoScale?: boolean; autoScaleFactor?: number; }