From 18c4c7e82e309e868e4e1e47460c5b3a0600847e Mon Sep 17 00:00:00 2001 From: Sam Nystrom Date: Thu, 7 Mar 2024 07:07:15 +0000 Subject: Switch f64 to f32 --- src/NodeEditor.tsx | 13 ++++++++++++- src/nodes/Fourier.tsx | 6 +++--- src/nodes/Intersperse.tsx | 6 +++--- src/nodes/Linspace.tsx | 2 +- src/nodes/Math.tsx | 12 ++++++------ src/nodes/Plot.tsx | 3 ++- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/NodeEditor.tsx b/src/NodeEditor.tsx index 83d81bd..0340a49 100644 --- a/src/NodeEditor.tsx +++ b/src/NodeEditor.tsx @@ -1,4 +1,4 @@ -import { useMemo, useRef } from 'preact/hooks'; +import { useEffect, useMemo, useRef } from 'preact/hooks'; import { signal, computed, batch, useSignal, useComputed, Signal } from '@preact/signals'; import { nodeRegistry } from './nodes'; import { SocketHandlers, SocketHandler, NodeInfo } from './node.tsx'; @@ -188,6 +188,17 @@ export const NodeEditor = () => { onInMouseUp, }; + const onKeyDown = (event: KeyboardEvent) => { + if (event.code === 'KeyX') { + alert('X'); + } + }; + + useEffect(() => { + document.addEventListener('keydown', onKeyDown); + return () => document.removeEventListener('keydown', onKeyDown); + }, []); + const onBgMouseDown = () => { const onMouseMove = (event: MouseEvent) => batch(() => { offsetX.value += event.movementX; diff --git a/src/nodes/Fourier.tsx b/src/nodes/Fourier.tsx index 3763402..f95f26d 100644 --- a/src/nodes/Fourier.tsx +++ b/src/nodes/Fourier.tsx @@ -2,11 +2,11 @@ import { NodeShell, InputArray, OutputNumber, NodeComponentProps, NodeInfo } fro import { fft } from '../wasm.ts'; export interface FourierInputs { - data: Float64Array, + data: Float32Array, } export interface FourierOutputs { - data: Float64Array, + data: Float32Array, } export const Fourier = ({ id, x, y, inputs }: NodeComponentProps) => { @@ -21,5 +21,5 @@ export const Fourier = ({ id, x, y, inputs }: NodeComponentProps) export const FourierNode: NodeInfo = { component: Fourier, func: ({ data }) => ({ data: fft(data) }), - inputs: { data: new Float64Array(0) }, + inputs: { data: new Float32Array(0) }, }; \ No newline at end of file diff --git a/src/nodes/Intersperse.tsx b/src/nodes/Intersperse.tsx index 7487a84..2ef2a03 100644 --- a/src/nodes/Intersperse.tsx +++ b/src/nodes/Intersperse.tsx @@ -2,12 +2,12 @@ import { NodeShell, InputArray, OutputNumber, NodeComponentProps, NodeInfo } fro import { intersperse } from '../wasm.ts'; export interface IntersperseInputs { - a: Float64Array, - b: Float64Array, + a: Float32Array, + b: Float32Array, } export interface IntersperseOutputs { - out: Float64Array, + out: Float32Array, } export const Intersperse = ({ id, x, y, inputs }: NodeComponentProps) => { diff --git a/src/nodes/Linspace.tsx b/src/nodes/Linspace.tsx index 16d8ba6..df1dbe6 100644 --- a/src/nodes/Linspace.tsx +++ b/src/nodes/Linspace.tsx @@ -8,7 +8,7 @@ export interface LinspaceInputs { } export interface LinspaceOutputs { - data: Float64Array, + data: Float32Array, } export const Linspace = ({ id, x, y, inputs }: NodeComponentProps) => { diff --git a/src/nodes/Math.tsx b/src/nodes/Math.tsx index e513538..ec11277 100644 --- a/src/nodes/Math.tsx +++ b/src/nodes/Math.tsx @@ -50,12 +50,12 @@ export type MathOp = typeof MathOp; export interface MathInputs { op: MathOp, - a: number | TypedArray, - b: number | TypedArray, + a: number | Float32Array, + b: number | Float32Array, } export interface MathOutputs { - out: boolean | number | TypedArray, + out: boolean | number | Float32Array, } export const MathC = ({ id, x, y, inputs }: NodeComponentProps) => { @@ -127,7 +127,7 @@ const mathFunc = ({ op, a, b }: MathInputs): MathOutputs => { if (typeof b === 'number') { return { out: doMathOp(op, a, b) }; } else { - const out = new Float64Array(b.length); + const out = new Float32Array(b.length); for (let i = 0; i < out.length; i++) { out[i] = doMathOp(op, a, b[i]); } @@ -135,13 +135,13 @@ const mathFunc = ({ op, a, b }: MathInputs): MathOutputs => { } } else { if (typeof b === 'number') { - const out = new Float64Array(a.length); + const out = new Float32Array(a.length); for (let i = 0; i < out.length; i++) { out[i] = doMathOp(op, a[i], b); } return { out }; } else { - const out = new Float64Array(Math.min(a.length, b.length)); + const out = new Float32Array(Math.min(a.length, b.length)); for (let i = 0; i < out.length; i++) { out[i] = doMathOp(op, a[i], b[i]); } diff --git a/src/nodes/Plot.tsx b/src/nodes/Plot.tsx index dca3219..eaba592 100644 --- a/src/nodes/Plot.tsx +++ b/src/nodes/Plot.tsx @@ -13,7 +13,8 @@ export const Plot = ({ id, x, y, inputs }: NodeComponentProps) => { const dy = 0; let path = ''; if (data !== null && data.length > 3) { - for (let i = 0; i < data.length - data.length % 2; i += 2) { + for (let i = 0; i < data.length; i += Math.max(1, Math.floor(data.length / 1000))) { + if (i >= data.length) break; path += (i ? 'L' : 'M') + (data[i] * scale + dx) + ' ' + (data[i+1] * scale + dy); } } -- cgit v1.2.3