diff --git a/README.md b/README.md index 8eb42b9..c08c603 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,10 @@ const newCurrent = ride(line, 3, 2, true); import { Line } from './JavaScript-main/src/exports.js' const line = Line.create.one({ end: -10 }); -// line = { neg: true, count: 2, dis: 10, spacing: 10, end: -10, min: -10, max: 0, points: [0, -10] } +// line = { neg: true, count: 2, dis: 10, spacing: 10, end: -10, points: [0, -10] } const line = Line.create.one({ end: -10, count: 3 }); -// line = { neg: true, count: 3, dis: 10, spacing: 5, end: -10, min: -10, max: 0, points: [0, -5, -10] } +// line = { neg: true, count: 3, dis: 10, spacing: 5, end: -10, points: [0, -5, -10] } ``` ### حساب نسبة النقطة على المستقيم diff --git a/src/line/func/create.js b/src/line/func/create.js index e8f11ba..99e352e 100644 --- a/src/line/func/create.js +++ b/src/line/func/create.js @@ -10,22 +10,22 @@ * @throws إذا كانت الخيارات غير صالحة * @example * const line = Line.create.one({}) - * // line = { neg: false, start: 0, dis: 1, spacing: 1, count: 2, end: 1, min: 0, max: 1, points: [0, 1] } + * // line = { neg: false, start: 0, dis: 1, spacing: 1, count: 2, end: 1, points: [0, 1] } * @example * const line = Line.create.one({ points: [0, -5, -10] }) - * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, min: -10, max: 0, points: [0, -5, -10] } + * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, points: [0, -5, -10] } * @example * const line = Line.create.one({ start: 0, end: -10, count: 3 }) - * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, min: -10, max: 0, points: [0, -5, -10] } + * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, points: [0, -5, -10] } * @example * const line = Line.create.one({ start: 0, dis: 10, count: 3, neg: true }) - * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, min: -10, max: 0, points: [0, -5, -10] } + * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, points: [0, -5, -10] } * @example * const line = Line.create.one({ start: 0, spacing: 5, count: 3, neg: true }) - * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, min: -10, max: 0, points: [0, -5, -10] } + * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, points: [0, -5, -10] } * @example * const line = Line.create.one({ start: 0, spacing: 5, dis: 10, neg: true }) - * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, min: -10, max: 0, points: [0, -5, -10] } + * // line = { neg: true, start: 0, dis: 10, spacing: 5, count: 3, end: -10, points: [0, -5, -10] } */ export function one({ points, end, dis, spacing, start = 0, count = 2, neg = false }) { // التحقق من القيم المقدمة @@ -82,16 +82,6 @@ export function one({ points, end, dis, spacing, start = 0, count = 2, neg = fal this.dis = this.neg ? this.start - value : value - this.start } }, - min: { - get() { - return this.neg ? -this.dis : 0 - } - }, - max: { - get() { - return this.neg ? 0 : this.dis - } - }, points: { get() { return Array.from({ length: this.count }, (_, i) => this.start + this.spacing * i * (this.neg ? -1 : 1)) diff --git a/src/line/func/point.js b/src/line/func/point.js index d475336..f9aadda 100644 --- a/src/line/func/point.js +++ b/src/line/func/point.js @@ -2,6 +2,8 @@ /** @typedef {import("../options.js").PosAssignOptions} PosAssignOptions */ /** @typedef {import("../imports.js").Point.Point} Point */ +import { from } from './time.js' + /** * يتحقق ما إذا كانت النقطة داخل نقاط المستقيم * @param {Line} line - المستقيم المراد التحقق عليه @@ -16,9 +18,9 @@ * const pointInLine = inside(line, 15) * // pointInLine = false */ -export function inside({ min, max }, point) { +export function inside(line, point) { // أعد صحيح إذا كانت النقطة داخل النطاق - return point >= min && point <= max + return point >= from.min(line) && point <= from.max(line) } /** @@ -45,18 +47,18 @@ export function inside({ min, max }, point) { * const newCurrent = ride(line, -3, 2, true) * // newCurrent = -5 */ -export function ride({ min, max, neg }, current, step, inverse = false) { +export function ride(line, current, step, inverse = false) { // إذا كانت الخطوة تساوي صفرًا، أعد الموضع الحالي دون تغييره if (step === 0) return current // تحقق مما إذا كان إتجاه الحركة معكوساً على مستقيم سالب. // إذا تطابقت، زد الموضع الحالي بالخطوة ولكن لا تتجاوز القيمة القصوى // إذا لم تتطابق، قلل الموضع الحالي بالخطوة ولكن لا تنزل تحت القيمة الدنيا - return inverse === neg + return inverse === line.neg ? // إذا كانت الحركة للأمام على مستقيم موجب أو للخلف على مستقيم سالب، تحرك خطوة بالموجب دون تجاوز القيمة القصوى - Math.min(current + step, max) + Math.min(current + step, from.max(line)) : // إذا كانت الحركة للأمام على مستقيم سالب أو للخلف على مستقيم موجب، تحرك خطوة بالسالب دون تجاوز القيمة الدنيا - Math.max(current - step, min) + Math.max(current - step, from.min(line)) } /** diff --git a/src/line/func/time.js b/src/line/func/time.js index 0bccb3a..43865d1 100644 --- a/src/line/func/time.js +++ b/src/line/func/time.js @@ -40,9 +40,9 @@ export function to({ dis, neg, end }, point) { */ to.clamp = function (line, point) { // إذا كانت النقطة أكبر من الحد الأقصى، إرجاع 1 - if (point >= line.max) return 1 + if (point >= from.max(line)) return 1 // إذا كانت النقطة أقل من الحد الأدنى، إرجاع 0 - if (point <= line.min) return 0 + if (point <= from.min(line)) return 0 // حساب النسبة الأحادية المقيدة للنقطة على المستقيم return to(line, point) } @@ -59,7 +59,7 @@ to.clamp = function (line, point) { */ to.clamp.min = function (line, point) { // إذا كانت النقطة أقل من الحد الأدنى، إرجاع 0 - if (point <= line.min) return 0 + if (point <= from.min(line)) return 0 // حساب النسبة الأحادية المقيدة للنقطة على المستقيم return to(line, point) } @@ -76,7 +76,7 @@ to.clamp.min = function (line, point) { */ to.clamp.max = function (line, point) { // إذا كانت النقطة أكبر من الحد الأقصى، إرجاع 1 - if (point >= line.max) return 1 + if (point >= from.max(line)) return 1 // حساب النسبة الأحادية المقيدة للنقطة على المستقيم return to(line, point) } diff --git a/src/line/options.js b/src/line/options.js index 3017639..81f56ee 100644 --- a/src/line/options.js +++ b/src/line/options.js @@ -46,7 +46,5 @@ export {} * @property {Point} spacing - التباعد بين النقاط * @property {number} count - عدد النقاط على المستقيم، يشمل النقطة الأولى والأخيرة * @property {boolean} neg - قيمة تخبر إذا كان المستقيم موجباً أم سالباً - * @property {Readonly} min - النقطة على طرف المستقيم الأدنى - * @property {Readonly} max - النقطة على طرف المستقيم الأقصى * @property {Readonly} points - النقاط المحددة على المستقيم */ diff --git a/tests/line/func/create.js b/tests/line/func/create.js index 45cd722..9594808 100644 --- a/tests/line/func/create.js +++ b/tests/line/func/create.js @@ -32,8 +32,6 @@ export default function () { }) deepEqual(l.spacing, 2) deepEqual(l.end, 2) - deepEqual(l.min, 0) - deepEqual(l.max, 2) deepEqual(l.points, [0, 2]) // 1 -2-> 3 @@ -62,8 +60,6 @@ export default function () { }) deepEqual(l.spacing, 2) deepEqual(l.end, -2) - deepEqual(l.min, -2) - deepEqual(l.max, 0) deepEqual(l.points, [0, -2]) // -1 <-2- 1 @@ -92,8 +88,6 @@ export default function () { }) deepEqual(l.spacing, 2) deepEqual(l.end, 2) - deepEqual(l.min, 0) - deepEqual(l.max, 2) deepEqual(l.points, [0, 2]) }) @@ -109,8 +103,6 @@ export default function () { }) deepEqual(l.spacing, 2) deepEqual(l.end, -2) - deepEqual(l.min, -2) - deepEqual(l.max, 0) deepEqual(l.points, [0, -2]) }) }) @@ -128,8 +120,6 @@ export default function () { }) deepEqual(l.spacing, 1) deepEqual(l.end, 3) - deepEqual(l.min, 0) - deepEqual(l.max, 2) deepEqual(l.points, [1, 2, 3]) }) @@ -145,8 +135,6 @@ export default function () { }) deepEqual(l.spacing, 1) deepEqual(l.end, -3) - deepEqual(l.min, -2) - deepEqual(l.max, 0) deepEqual(l.points, [-1, -2, -3]) }) }) @@ -164,8 +152,6 @@ export default function () { }) deepEqual(l.spacing, 1) deepEqual(l.end, 2) - deepEqual(l.min, 0) - deepEqual(l.max, 2) deepEqual(l.points, [0, 1, 2]) }) @@ -181,8 +167,6 @@ export default function () { }) deepEqual(l.spacing, 1) deepEqual(l.end, -2) - deepEqual(l.min, -2) - deepEqual(l.max, 0) deepEqual(l.points, [0, -1, -2]) }) }) @@ -200,8 +184,6 @@ export default function () { }) deepEqual(l.spacing, 1) deepEqual(l.end, 2) - deepEqual(l.min, 0) - deepEqual(l.max, 2) deepEqual(l.points, [0, 1, 2]) }) @@ -217,8 +199,6 @@ export default function () { }) deepEqual(l.spacing, 1) deepEqual(l.end, -2) - deepEqual(l.min, -2) - deepEqual(l.max, 0) deepEqual(l.points, [0, -1, -2]) }) })