forked from StudioInfinity/dyna3
Revert "Spruce up formatting and error messages"
This reverts commit adc60ac5c1
. We decided
that it would be better for me to request formatting changes one by one.
This commit is contained in:
parent
adc60ac5c1
commit
c081f1a809
1 changed files with 23 additions and 40 deletions
|
@ -308,11 +308,10 @@ impl Element for Point {
|
||||||
|
|
||||||
fn default_regulators(self: Rc<Self>) -> Vec<Rc<dyn Regulator>> {
|
fn default_regulators(self: Rc<Self>) -> Vec<Rc<dyn Regulator>> {
|
||||||
all::<Axis>()
|
all::<Axis>()
|
||||||
.map(
|
.map(|axis| {
|
||||||
|axis| Rc::new(
|
Rc::new(PointCoordinateRegulator::new(self.clone(), axis))
|
||||||
PointCoordinateRegulator::new(self.clone(), axis)
|
as Rc::<dyn Regulator>
|
||||||
) as Rc::<dyn Regulator>
|
})
|
||||||
)
|
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,32 +538,19 @@ impl PointCoordinateRegulator {
|
||||||
let measurement = subject.representation().map(
|
let measurement = subject.representation().map(
|
||||||
move |rep| rep[axis as usize]
|
move |rep| rep[axis as usize]
|
||||||
);
|
);
|
||||||
|
|
||||||
let set_point = create_signal(SpecifiedValue::from_empty_spec());
|
let set_point = create_signal(SpecifiedValue::from_empty_spec());
|
||||||
let serial = Self::next_serial();
|
Self { subject, axis, measurement, set_point, serial: Self::next_serial() }
|
||||||
|
|
||||||
Self { subject, axis, measurement, set_point, serial }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Serial for PointCoordinateRegulator {
|
impl Serial for PointCoordinateRegulator {
|
||||||
fn serial(&self) -> u64 {
|
fn serial(&self) -> u64 { self.serial }
|
||||||
self.serial
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Regulator for PointCoordinateRegulator {
|
impl Regulator for PointCoordinateRegulator {
|
||||||
fn subjects(&self) -> Vec<Rc<dyn Element>> {
|
fn subjects(&self) -> Vec<Rc<dyn Element>> { vec![self.subject.clone()] }
|
||||||
vec![self.subject.clone()]
|
fn measurement(&self) -> ReadSignal<f64> { self.measurement }
|
||||||
}
|
fn set_point(&self) -> Signal<SpecifiedValue> { self.set_point }
|
||||||
|
|
||||||
fn measurement(&self) -> ReadSignal<f64> {
|
|
||||||
self.measurement
|
|
||||||
}
|
|
||||||
|
|
||||||
fn set_point(&self) -> Signal<SpecifiedValue> {
|
|
||||||
self.set_point
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ProblemPoser for PointCoordinateRegulator {
|
impl ProblemPoser for PointCoordinateRegulator {
|
||||||
|
@ -572,25 +558,22 @@ impl ProblemPoser for PointCoordinateRegulator {
|
||||||
self.set_point.with_untracked(|set_pt| {
|
self.set_point.with_untracked(|set_pt| {
|
||||||
if let Some(val) = set_pt.value {
|
if let Some(val) = set_pt.value {
|
||||||
let col = self.subject.column_index().expect(
|
let col = self.subject.column_index().expect(
|
||||||
"Subject should be indexed before point coordinate regulator writes problem data"
|
"Subject must be indexed before point-coordinate regulator poses.");
|
||||||
);
|
|
||||||
problem.frozen.push(self.axis as usize, col, val);
|
problem.frozen.push(self.axis as usize, col, val);
|
||||||
|
// Check if all three spatial coordinates have been frozen, and if so,
|
||||||
// if all three of the subject's spatial coordinates have been
|
// freeze the norm component as well
|
||||||
// frozen, then freeze its norm component too
|
let mut coords = [0.0; Axis::CARDINALITY];
|
||||||
let mut coords_frozen = [0.0; Axis::CARDINALITY];
|
let mut nset: usize = 0;
|
||||||
let mut n_set: usize = 0;
|
|
||||||
for &MatrixEntry {index, value} in &(problem.frozen) {
|
for &MatrixEntry {index, value} in &(problem.frozen) {
|
||||||
let (row_frozen, col_frozen) = index;
|
if index.1 == col && index.0 < Axis::CARDINALITY {
|
||||||
if col_frozen == col && row_frozen < Axis::CARDINALITY {
|
nset += 1;
|
||||||
n_set += 1;
|
coords[index.0] = value
|
||||||
coords_frozen[row_frozen] = value
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if n_set == Axis::CARDINALITY {
|
if nset == Axis::CARDINALITY {
|
||||||
let [x, y, z] = coords_frozen;
|
let [x, y, z] = coords;
|
||||||
let norm = point(x, y, z)[Point::NORM_COMPONENT];
|
problem.frozen.push(
|
||||||
problem.frozen.push(Point::NORM_COMPONENT, col, norm);
|
Point::NORM_COMPONENT, col, point(x,y,z)[Point::NORM_COMPONENT]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue