Skip to content

Multivector method .is_blade() will fail for null multivectors #537

Open
@Greg1950

Description

@Greg1950

Following is the code (as of 2025 March 25) for the .is_blade method, which I suspect was motivated by page 533 of Geometric Algebra for Computer Science (Dorst, Fontijne, & Mann, 2007)

def is_blade(self) -> bool:
        """
        True is self is blade, otherwise False
        sets self.blade_flg and returns value
        """
        if self.blade_flg is not None:
            return self.blade_flg
        else:
            if self.is_versor():
                if self.i_grade is not None:
                    self.blade_flg = True
                else:
                    self.blade_flg = False
            else:
                self.blade_flg = False
            return self.blade_flg

Consider the example b = e0 + e1 in the algebra G(1,1). The null vector b is_ a 1-blade. Within the code, with b taking the place of self, b.is_versor() will evaluate as False, so b.blade_flg will be set to False, so b.is_blade() will return False even though b is in fact a blade. An example of a 2-blade which is not a versor is B = (e0 + e1)^e2 in the algebra G(1,2).

Upshot: As currently written, the multivector method .is_blade() will fail for certain multivectors.

As pointed out on page 532 of GACS , whether a multivector is a versor depends upon the scalar product ("metric") used to generate the geometric algebra. Whether a multivector is a blade is independent of the scalar product, however, as the outer product is not a metric concept.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions