void HPlane::configure(LineSegmentSide const &newBaseSeg) { // Only map line segments are suitable. DENG2_ASSERT(newBaseSeg.hasMapSide()); LOG_AS("HPlane::configure"); // Clear the list of intersection points. clearIntercepts(); // Reconfigure the partition line. LineSide &mapSide = newBaseSeg.mapSide(); d->partition.direction = mapSide.to().origin() - mapSide.from().origin(); d->partition.origin = mapSide.from().origin(); d->lineSegment = const_cast<LineSegmentSide *>(&newBaseSeg); d->length = d->partition.direction.length(); d->angle = M_DirectionToAngleXY(d->partition.direction.x, d->partition.direction.y); d->slopeType = M_SlopeTypeXY(d->partition.direction.x, d->partition.direction.y); d->perp = d->partition.origin.y * d->partition.direction.x - d->partition.origin.x * d->partition.direction.y; d->para = -d->partition.origin.x * d->partition.direction.x - d->partition.origin.y * d->partition.direction.y; //LOG_DEBUG("line segment %p %s") // << &newBaseSeg << d->partition.asText(); }